diff --git a/pk_optimizer/1_Comp_Model_PK.ipynb b/pk_optimizer/1_Comp_Model_PK.ipynb
index 7cd0221b558962ca844eca041ba6a351a377d083..017084cb8a6a4afdd2de68f53ca0e33a6c78effa 100644
--- a/pk_optimizer/1_Comp_Model_PK.ipynb
+++ b/pk_optimizer/1_Comp_Model_PK.ipynb
@@ -4,20 +4,7 @@
    "cell_type": "code",
    "execution_count": 1,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl4VOXZ+PHvnYSQsCRAgAAJu+w7YVOQTUFUcEVlEaVV0Vqr9q1tsbbV6u9tbatWqHZxq4gouKGoCLxVgqKyE2SHsKhh3wIJZCHw/P54JmMIITOEOXNmuT/Xda6ZOXOW+zBh7nnOs4kxBqWUUgogxu0AlFJKhQ5NCkoppbw0KSillPLSpKCUUspLk4JSSikvTQpKKaW8NCkopZTy0qSglFLKS5OCUkoprzi3Azhf9evXNy1atKjSvsePH6dmzZqBDSjE6TVHB73m6HAh17xy5cqDxpgGvrYLu6TQokULVqxYUaV9MzMzGTx4cGADCnF6zdFBrzk6XMg1i8i3/mynt4+UUkp5aVJQSinlpUlBKaWUV9jVKSilgu/kyZPk5ORQWFjodiheycnJbNy40e0wgsqfa05ISCA9PZ1q1apV6RyaFJRSPuXk5FC7dm1atGiBiLgdDgB5eXnUrl3b7TCCytc1G2M4dOgQOTk5tGzZskrn0NtHSimfCgsLSUlJCZmEoComIqSkpFxQiU6TglLKL5oQwsOFfk56+0j5VFgI06bB4cNw8iQkJcHdd0NiotuRKaUCTZOC8un3v4e//vXMdevWwUsvuROPik61atUiPz8/oMfcuXMnX331FePGjavwvQ4dOtCuXTvvumXLlhEfH+/IuVesWMFrr73G1KlTA3L8qtLbR6pS334LU6fChAlQUAAlJfDb38LLL8N//uN2dEpdmJ07d/LGG2+c8/3WrVuTlZXlXQKVECo6d69evVxPCKBJQfnw29+CCPzv/0JCAsTGwmOPwdChcO+9sGaN2xGqaFM61MOECRNo374948ePxxgD2GFwfv3rX9OnTx/69OlDdnY2ABMnTuSdd97xHqNWrVoATJ48mS+++ILu3bvzt7/9za/zP/bYYzz11FPe1507d2bnzp3eksVdd91Fp06dGD58OAUFBQBkZ2dz+eWX061bN3r27Mm2bdvOOndmZiYjR44E4PDhw1x33XV07dqVfv368c033wDwxz/+kR//+McMHjyYVq1aOZJE9PaROqfVq+H112HyZGja9If1sbHw5pvQoweMHg2rVkGUtQyMag8+CFlZgT1m9+7w7LP+b7969WqWLl1K27Zt6d+/P19++SUDBgwAICkpiWXLlvHaa6/x4IMP8tFHH53zOE8++SRPPfXUObfZtm0b3bt3B6B///48//zzlca1detW3nzzTV588UVuvvlm3n33XW699VbGjx/P5MmTuf766yksLOT06dNnnTszM9N7nEcffZQePXrw/vvv89lnn3HbbbeR5flH37RpEwsXLiQvL4927drxk5/8pMp9EiqiJQVVIWPgl7+ElBSbFMpr2NAmhuxs+Ne/gh+fim59+vQhLS2NmJgYunfvzs6dO73vjR071vv49ddfX9B5yt4+8pUQAFq2bOlNIhkZGezcuZO8vDx27drF9ddfD9jOZTVq1Kj0OIsXL2bChAkADB06lEOHDnH06FEArr76aqpXr079+vVp2LAh+/btu5BLPIuWFFSFMjPh009hyhRITq54m4ED7W2kqVPtr8cA/lhRIex8ftE7pXr16t7nsbGxlJSUeF+XbZJZ+jwuLo7Tp08DtoNXcXFxlc9d9ljAGX0CysdVUFDgvbV1Pirap/RaKrv2QNCSgqrQ3LkQHw933VX5dj//OeTkQJnbtUq5atasWd7Hiy++GLB1DStXrgTggw8+4OTJkwDUrl2bvLy88zp+ixYtWLVqFQCrVq1ix44dlW6flJREeno677//PgBFRUWcOHGi0nMPHDiQGTNmAPa2Uv369UlKSjqvOKtKk4Kq0BdfQJ8+vvsiXHUVtG0Lzzxjbzkp5baioiL69u3LlClTvJXHd911F4sWLaJPnz4sXbrUO1FN165diYuLo1u3bn5XNN94440cPnyY7t27889//pO2bdv63Gf69OlMnTqVrl27cskll7B3795Kz/3YY4+xYsUKunbtyuTJk5k2bdp5/itcAGNMWC0ZGRmmqhYuXFjlfcNVVa45P9+YuDhjJk/2b/t//MMYMOaLL877VI7QzznwNmzY4Ojxq+LYsWNnrWvevLk5cOCAC9EER0XXXJGKPi9ghfHjO1ZLCuosy5bZ/giXXurf9rfdBvXqgZ8/tJRSIUyTgjrLF1/YvgmXXOLf9jVr2mEvZs+G7dudjU2pyuzcuZP69eu7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\n",
-      "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "# Import commands\n",
     "from scipy.stats import gamma\n",
@@ -27,74 +14,125 @@
     "from scipy.integrate import odeint \n",
     "import math as math\n",
     "\n",
-    "\n",
-    "# Derivative function\n",
-    "def derivs(curr_vals, time):\n",
-    "    \n",
-    "    # Define value of input function Cin\n",
-    "    Cin = rv.pdf(time)    \n",
+    "class pk1Comp:\n",
     "    \n",
-    "    # Unpack the current values of the variables we wish to \"update\" from the curr_vals list\n",
-    "    C = curr_vals\n",
-    "    \n",
-    "    # Right-hand side of odes, which are used to computer the derivative\n",
-    "    dC_dt = flow*(Cin - C)/Vol\n",
-    "    #Cout = C\n",
-    "    return dC_dt\n",
-    "\n",
-    "# Declare Variables for initial conditions\n",
-    "flow = .01 # Flow into capillary\n",
-    "Vol = 0.05 # Volume of compartment\n",
-    "C0 = 0 # Initial concentration of tracer in plasma\n",
-    "tmax = 10 #Time in seconds\n",
-    "dt = 0.1 #Time step\n",
-    "a = 2. # Alpha for gamma distribution\n",
-    "rv = gamma(a, loc = 2, scale = 0.65) #input function\n",
+    "    \"\"\"The pk1Comp object is a one compartment PK model that outputs graphs of mass of tracer over time.\"\"\"\n",
     "\n",
+    "    def __init__ (self, numParam = 4, Flow = 1, Vp = 0.1, Visf = 0.5, PS = 0.15):\n",
+    "        \n",
+    "        \"\"\"Initializes the model with default parameter values for flow, Vp, Visf, and PS.\n",
+    "        Parameters\n",
+    "        ----------      \n",
+    "        numParam: int\n",
+    "            numParam is the number of parameters you want to optimize for the model. Defaults to 4.\n",
+    "            \n",
+    "        Flow : double\n",
+    "            Flow is the flow of plasma through the blood vessel in mL/(mL*min). Defaults to 1.\n",
+    "        \n",
+    "        Vp : double\n",
+    "            Vp is the volume of plasma in mL. Defaults to 0.1.\n",
+    "            \n",
+    "        Visf : double\n",
+    "            Visf is the volume of interstitial fluid in mL. Defaults to 0.5.\n",
+    "        \n",
+    "        PS : double\n",
+    "            PS is the permeability-surface area constant in mL/(g*min). Defaults to 0.15.      \n",
+    "        \"\"\"\n",
+    "        \n",
+    "        # Declare Variables for initial conditions\n",
+    "        self.numParam = numParam\n",
+    "        self.Flow = Flow\n",
+    "        self.Vp = Vp\n",
+    "        self.Visf = Visf\n",
+    "        self.PS = PS\n",
+    "        C0 = 0 # Initial concentration of tracer in plasma\n",
+    "        tmax = 10 #Time in seconds\n",
+    "        dt = 0.1 #Time step\n",
+    "        a = 2. # Alpha for gamma distribution\n",
+    "        rv = gamma(a, loc = 2, scale = 0.65) #input function\n",
     "\n",
-    "# Define the time array\n",
-    "time = ls\n",
-    "np.arange(0, tmax + dt, dt)\n",
+    "        # Define the time array\n",
+    "        time = np.arange(0, tmax + dt, dt)\n",
+    "        \n",
+    "    # Derivative function\n",
+    "    def derivs(curr_vals, time):\n",
+    "        \"\"\"Finds derivatives of ODEs.\n",
+    "        \n",
+    "        Parameters\n",
+    "        ----------      \n",
+    "        curr_vals : double[]\n",
+    "            curr_vals it he current values of the variables we wish to \"update\" from the curr_vals list.\n",
+    "            \n",
+    "        time : double[]\n",
+    "            time is our time array from 0 to tmax with timestep dt.\n",
+    "            \n",
+    "        Returns\n",
+    "        -------\n",
+    "        dc_dt : double[]\n",
+    "            contains the derivative of concentrations with respect to time.\n",
+    "        \"\"\"\n",
     "\n",
-    "# Store the initial values in a list\n",
-    "init = [C0]\n",
+    "        # Define value of input function Cin\n",
+    "        Cin = rv.pdf(time)    \n",
     "\n",
-    "# Solve the odes with odeint\n",
-    "sol = odeint(derivs, init, time)\n",
+    "        # Unpack the current values of the variables we wish to \"update\" from the curr_vals list\n",
+    "        C = curr_vals\n",
     "\n",
-    "#Mass_plasma = Vp * sol[:,0] #mass of tracer in plasma\n",
-    "#Mass_isf = Visf * sol[:,1] #mass of tracer in isf\n",
-    "#Tp = Vp/(flow + PS) # mean transit time\n",
-    "#E = 1 - np.exp(-PS/flow) #extraction fraction\n",
-    "#Q = Mass_plasma + Mass_isf\n",
+    "        # Right-hand side of odes, which are used to computer the derivative\n",
+    "        dC_dt = flow*(Cin - C)/Vol\n",
+    "        #Cout = C\n",
+    "        return dC_dt\n",
+    "    \n",
+    "    def getPlot(self):\n",
+    "        \"\"\"Plots the solution of the solved ODEs.\n",
+    "        \n",
+    "        Parameters\n",
+    "        ----------      \n",
+    "        self : self\n",
+    "            Passes variables needed from self. \n",
+    "        \"\"\"\n",
+    "        \n",
+    "        # Plot the results using the values stored in the solution variable, \"sol\"\n",
+    "        # Plot Cp using the \"0\" element from the solution\n",
+    "        plt.figure(1)\n",
+    "        plt.plot(time, rv.pdf(time), color = 'blue', label = 'Input Function')\n",
+    "        plt.plot(time, sol[:,0],color=\"green\", label = 'Cout')\n",
     "\n",
-    "#print('The mean transit time is ' + str(Tp))\n",
-    "#print('The extraction fraction is ' + str(E))\n",
+    "        # Plot Cisf using the \"1\" element from the solution\n",
+    "        #plt.plot(time, sol[:,1],color=\"purple\", label = 'Cisf')\n",
+    "        plt.xlabel('Time [s]')\n",
+    "        plt.ylabel('Concentration [mM]')\n",
+    "        plt.legend(loc = 'best')\n",
+    "        plt.grid()\n",
+    "        \n",
+    "    def main(self):\n",
+    "        \"\"\"Main function to run and solve ODEs\"\"\"\n",
+    "        \n",
+    "        # Store the initial values in a list\n",
+    "        init = [C0]\n",
     "\n",
+    "        # Solve the odes with odeint\n",
+    "        sol = odeint(derivs, init, time)\n",
     "\n",
-    "# Plot the results using the values stored in the solution variable, \"sol\"\n",
-    "# Plot Cp using the \"0\" element from the solution\n",
-    "plt.figure(1)\n",
-    "plt.plot(time, rv.pdf(time), color = 'blue', label = 'Input Function')\n",
-    "plt.plot(time, sol[:,0],color=\"green\", label = 'Cout')\n",
+    "        #Mass_plasma = Vp * sol[:,0] #mass of tracer in plasma\n",
+    "        #Mass_isf = Visf * sol[:,1] #mass of tracer in isf\n",
+    "        #Tp = Vp/(flow + PS) # mean transit time\n",
+    "        #E = 1 - np.exp(-PS/flow) #extraction fraction\n",
+    "        #Q = Mass_plasma + Mass_isf\n",
     "\n",
-    "# Plot Cisf using the \"1\" element from the solution\n",
-    "#plt.plot(time, sol[:,1],color=\"purple\", label = 'Cisf')\n",
-    "plt.xlabel('Time [s]')\n",
-    "plt.ylabel('Concentration [mM]')\n",
-    "plt.legend(loc = 'best')\n",
-    "plt.grid()\n",
+    "        #print('The mean transit time is ' + str(Tp))\n",
+    "        #print('The extraction fraction is ' + str(E))\n",
     "\n",
-    "# Plot mass of tracer using the \"2\" element from the solution\n",
-    "#plt.figure(2)\n",
-    "#plt.plot(time, Mass_plasma,color=\"red\", label = 'Plasma')\n",
-    "# Plot mass of tracer in tissue using the \"3\" element from the solution\n",
-    "#plt.plot(time, Mass_isf,color=\"black\", label = 'Interstitial Space')\n",
-    "#plt.plot(time, Q, color=\"blue\", label = 'Total mass')\n",
-    "#plt.xlabel('Time [s]')\n",
-    "#plt.ylabel('Mass [mg]')\n",
-    "#plt.legend(loc = 'best')\n",
-    "#plt.grid()\n",
+    "        # Plot mass of tracer using the \"2\" element from the solution\n",
+    "        #plt.figure(2)\n",
+    "        #plt.plot(time, Mass_plasma,color=\"red\", label = 'Plasma')\n",
+    "        # Plot mass of tracer in tissue using the \"3\" element from the solution\n",
+    "        #plt.plot(time, Mass_isf,color=\"black\", label = 'Interstitial Space')\n",
+    "        #plt.plot(time, Q, color=\"blue\", label = 'Total mass')\n",
+    "        #plt.xlabel('Time [s]')\n",
+    "        #plt.ylabel('Mass [mg]')\n",
+    "        #plt.legend(loc = 'best')\n",
+    "        #plt.grid()\n",
     "\n"
    ]
   },