Repository: WikiWatershed/gwlf-e (language: python)

Issue:
Upgrade to Python 3
As part of https://github.com/WikiWatershed/model-my-watershed/issues/3165


Discussion / hints:
Most of the upgrade is going well. There are some numeric discrepancies though:

```console
❯ pipenv run nosetests --verbosity=0 --nologcapture test.integrationtests.test_output_gms8
```
```
======================================================================
FAIL: test_loads (test.integrationtests.test_output_gms8.gms8_TestOutput)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/ttuhinanshu/dev/mmw-gwlfe/test/integrationtests/test_output.py", line 125, in test_loads
    raise AssertionError("Not all values within margin of error")
AssertionError: Not all values within margin of error
-------------------- >> begin captured stdout << ---------------------
AssertionError on Sediment (Low-Density Mixed)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 11.40488149
Max relative difference: 0.00172414
 x: array(6626.236146)
 y: array(6614.831265)
AssertionError on TotalN (Low-Density Mixed)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 0.30493111
Max relative difference: 0.00172414
 x: array(177.164974)
 y: array(176.860043)
AssertionError on TotalP (Low-Density Mixed)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 0.03454588
Max relative difference: 0.00172414
 x: array(20.071153)
 y: array(20.036608)

--------------------- >> end captured stdout << ----------------------
```
```
======================================================================
FAIL: test_summary_loads (test.integrationtests.test_output_gms8.gms8_TestOutput)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/ttuhinanshu/dev/mmw-gwlfe/test/integrationtests/test_output.py", line 104, in test_summary_loads
    raise AssertionError("Not all values within margin of error")
AssertionError: Not all values within margin of error
-------------------- >> begin captured stdout << ---------------------
AssertionError on Sediment (Total Loads)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 11.40488149
Max relative difference: 3.34669102e-06
 x: array(3407819.716665)
 y: array(3407808.311784)
AssertionError on TotalN (Total Loads)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 0.30493111
Max relative difference: 2.29903047e-06
 x: array(132634.957626)
 y: array(132634.652695)
AssertionError on TotalP (Total Loads)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 0.03454588
Max relative difference: 3.47984992e-06
 x: array(9927.438259)
 y: array(9927.403713)
AssertionError on Sediment (Loading Rates)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 5.77569972e-05
Max relative difference: 3.34669102e-06
 x: array(17.257999)
 y: array(17.257941)
AssertionError on TotalN (Loading Rates)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 1.54424271e-06
Max relative difference: 2.29903047e-06
 x: array(0.671695)
 y: array(0.671693)
AssertionError on TotalP (Loading Rates)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 1.74948421e-07
Max relative difference: 3.47984992e-06
 x: array(0.050275)
 y: array(0.050275)
AssertionError on Sediment (Mean Annual Concentration)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 1.77370757e-05
Max relative difference: 3.34669102e-06
 x: array(5.299902)
 y: array(5.299884)
AssertionError on TotalN (Mean Annual Concentration)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 4.74234314e-07
Max relative difference: 2.29903047e-06
 x: array(0.206276)
 y: array(0.206276)
AssertionError on TotalP (Mean Annual Concentration)

Not equal to tolerance rtol=1e-07, atol=0

Mismatched elements: 1 / 1 (100%)
Max absolute difference: 5.37263628e-08
Max relative difference: 3.47984992e-06
 x: array(0.015439)
 y: array(0.015439)

--------------------- >> end captured stdout << ----------------------
```
There are 4 failing test cases:
```
❯ pipenv run nosetests --verbosity=3 2>&1 | grep FAIL
test_loads (test.integrationtests.test_output_gms8.gms8_TestOutput) ... FAIL
test_summary_loads (test.integrationtests.test_output_gms8.gms8_TestOutput) ... FAIL
test_loads (test.integrationtests.test_output_nurbbank_zero.nurbbank_zero_TestOutput) ... FAIL
test_summary_loads (test.integrationtests.test_output_nurbbank_zero.nurbbank_zero_TestOutput) ... FAIL
test_loads (test.integrationtests.test_output_test1.test1_TestOutput) ... FAIL
test_summary_loads (test.integrationtests.test_output_test1.test1_TestOutput) ... FAIL
test_loads (test.integrationtests.test_output_test10.test10_TestOutput) ... FAIL
test_summary_loads (test.integrationtests.test_output_test10.test10_TestOutput) ... FAIL
```

All the differences are only in the Low-Density Mixed land cover type. The relative difference for `test_loads` averages 0.0014275025. The relative difference for `test_summary_loads` averages 4.61E-06.

Looking in to why only this land use type was causing issues, I added some debug statements to see how the values are being read from the GMS file:

```diff
diff --git a/gwlfe/Parser.py b/gwlfe/Parser.py
index d2050eb..82c5067 100644
--- a/gwlfe/Parser.py
+++ b/gwlfe/Parser.py
@@ -626,7 +626,7 @@ class GmsReader(object):
         z.n23b = self.next(float)  # High Density Urban Area (Ha)
         z.n23c = self.next(float)  # High Density Urban (Constructed Wetlands): % Drainage Used
         z.n24 = self.next(float)  # Hay/Pasture Area (Ha)
-        z.n24b = self.next(float)  # Low Density Urban Area (ha Ha
+        z.n24b = self.next(float, print=True)  # Low Density Urban Area (ha Ha
         z.n24c = self.next(float)  # Low Density Urban (Constructed Wetlands): % Drainage Used
         z.n24d = self.next(float)  # High Density Urban (Bioretention Areas): % Drainage Used
         z.n24e = self.next(float)  # Low Density Urban (Bioretention Areas): % Drainage Used
@@ -1247,7 +1247,7 @@ class GmsReader(object):
 
         return z
 
-    def next(self, typ):
+    def next(self, typ, print=False):
         """
         Pop the next token and cast it using the given callable function
         or type. If a scalar value is passed instead, assert that the
@@ -1255,8 +1255,14 @@ class GmsReader(object):
         """
         value, line_no, col_no = self.fp.next()
 
+        if print:
+            log.warn('==> type(value) {}'.format(type(value)))
+            log.warn('==> value {}'.format(value))
+
         if callable(typ):
             try:
+                if print:
+                    log.warn('==> typ(value) {}'.format(typ(value)))
                 return typ(value)
             except ValueError:
                 log.error('Unexpected token at Line {} Column {}'.format(line_no, col_no))
```

and in Python 2 the value gets truncated:

```
❯ pipenv run nosetests --verbosity=3 --nologcapture test.integrationtests.test_output_gms8

WARNING:gwlfe.Parser:==> type(value) <type 'str'>
WARNING:gwlfe.Parser:==> value 19.08022010634788
WARNING:gwlfe.Parser:==> typ(value) 19.0802201063
```

whereas in Python 3 the full value is used:

```
❯ pipenv run nosetests --verbosity=0 --nologcapture test.integrationtests.test_output_gms8
==> type(value) <class 'str'>
==> value 19.08022010634788
==> typ(value) 19.08022010634788
```

Which leads me to believe that while the numbers are different, they are _more_ accurate in Python 3, so we should update the tests to match the new values, rather than try to fix the code to match the old tests.

Fix patch:
diff --git a/CreateVariableFiles.py b/CreateVariableFiles.py
index 67aa0734..f8bbc35b 100644
--- a/CreateVariableFiles.py
+++ b/CreateVariableFiles.py
@@ -25,7 +25,7 @@
 else:
     with open("test/"+test_filename,"w") as file:
         file.write("import numpy as np\n"
-                    "from VariableUnittest import VariableUnitTest\n"
+                    "from .VariableUnitTest import VariableUnitTest\n"
                     "from unittest import skip\n"
                     "from gwlfe import {variable}\n"
                     "\n\n"
diff --git a/Pipfile b/Pipfile
new file mode 100644
index 00000000..0afe2ca5
--- /dev/null
+++ b/Pipfile
@@ -0,0 +1,17 @@
+[[source]]
+url = "https://pypi.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[packages]
+certifi = "==2021.5.30"
+funcsigs = "==1.0.2"
+llvmlite = "==0.37.0"
+nose = "==1.3.7"
+numpy = "==1.20.3"
+numba = "==0.54.0"
+
+[dev-packages]
+
+[requires]
+python_version = "3.9"
diff --git a/Pipfile.lock b/Pipfile.lock
new file mode 100644
index 00000000..efcd0b5b
--- /dev/null
+++ b/Pipfile.lock
@@ -0,0 +1,129 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "b75d25eb877553e2138cc496e643345d626f96f873d37c1ea2bc1e6451b7d83d"
+        },
+        "pipfile-spec": 6,
+        "requires": {
+            "python_version": "3.9"
+        },
+        "sources": [
+            {
+                "name": "pypi",
+                "url": "https://pypi.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "certifi": {
+            "hashes": [
+                "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee",
+                "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"
+            ],
+            "index": "pypi",
+            "version": "==2021.5.30"
+        },
+        "funcsigs": {
+            "hashes": [
+                "sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca",
+                "sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"
+            ],
+            "index": "pypi",
+            "version": "==1.0.2"
+        },
+        "llvmlite": {
+            "hashes": [
+                "sha256:14030a1c0f9aee0185db069163240c51d4e8a3eec0daf02468e057281dee612b",
+                "sha256:15b8ac7a489e31b7d5c482193edaa44374e3c18e409bea494224e31eb60e38e5",
+                "sha256:30431fe9a9b7b1c3585b71149cc11dc79b9d62dc86d3db15c3dcca33d274b5be",
+                "sha256:447b01c25d18921c4179f2eccba218d7c82b65cfe3952b0d018d569945427bf9",
+                "sha256:4616e17914fcc7c5bfb7d1014acbd4fca478949820e86218a29d9473d0aa221b",
+                "sha256:4c1e91fd4ba2764161e9a05b6fff46a52d26170186bad99629777e8c7246f0ef",
+                "sha256:57c1dae337863b497c141d40736041d4acb7769226b44fe05959fce3c3570d5d",
+                "sha256:6392b870cd018ec0c645d6bbb918d6aa0eeca8c62674baaee30862d6b6865b15",
+                "sha256:7449acca596f45e9e12b20c0b72d184f83025341cc2d44d7ccf5fe31356dcd08",
+                "sha256:74b6c3d2eb8cef32a09e8fd7637d0d37628c74f4deedf9361e0c0ebecc239208",
+                "sha256:794191922ac6414c55d66058eaba8b88a630c6e9f2cf0db7e8e661e74d71fa14",
+                "sha256:995c1a2c8b6a11a7f2c66e52576de6a28292d37842d383aae5be7b965b56d10f",
+                "sha256:ab00b7996e5ef795f59d95d3125850f3af28d19e43bdc08473947cb8045ce098",
+                "sha256:b6466d6369051e5c083b15cf285c00595ddb7f828be1ebecb1dfb97f3fab0bff",
+                "sha256:c92a209439fd0b8a41f6e2aba1d3afa260357028a29ed7db8c602c4d67c21540",
+                "sha256:cf7d623d33d24df51adc4e9e9f5734df752330661793d1662425ad2e926cb2d4",
+                "sha256:d31a3bd69894b31bbc68df00e0b37b0980a0cf025f9dbea9cdd37988230c33a3",
+                "sha256:df1d1b162a426480b37d6c4adeddff49e2fb9f71b307c7facac67bdce4767746",
+                "sha256:f9e84d683943c2f636b08db9b2d182d4b40b83e1a3e31e100af3bb9ed8d94bcd"
+            ],
+            "index": "pypi",
+            "version": "==0.37.0"
+        },
+        "nose": {
+            "hashes": [
+                "sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac",
+                "sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a",
+                "sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
+            ],
+            "index": "pypi",
+            "version": "==1.3.7"
+        },
+        "numba": {
+            "hashes": [
+                "sha256:06b8a3d0896daad13bcdfe7c3d3431480aa4c12b3c4478b1c0c583394f3f63bc",
+                "sha256:0801755ac3e05f7ba30c5404556cedc437f58baa3b1b4886c40c16f33c5d684c",
+                "sha256:10f4e76dbf0a8f01a6fe9dd7d20e8f9c842c8a86c5ea9046fbf4c44c76c7451a",
+                "sha256:13ee9e82b7ce3d147e0ec49d07034ffcc2e956df1cda9cbfd9ab855f2d50543b",
+                "sha256:253f0989c1e1a0f4e6409eefeea59cddb11f181b44d75ac5a3a287cccff8c9f0",
+                "sha256:27fdb46ea27c891b70f476f643af86d0af8c08a4d9d19a0ae28f80ce68efc550",
+                "sha256:2e68807fe635792426ac2bf240bb031ef7fb0aab576ead556aa1fec7376f5d9a",
+                "sha256:466099da7ab3d9b18b6e7cee420994f80acb6e3330a741e03030ac8eef4b3b78",
+                "sha256:5963c6e39a25f8dfb85abd47451947b8a32e86b6ffcad091a01af37b27dcb11b",
+                "sha256:61c037065c3762263d27bd08d87b7a00b18025016a54df836b096b689d1b8b91",
+                "sha256:95718e256d2551e62d329a7d76193327c1974e9439cdba5929d383d86e664bb9",
+                "sha256:97f996262a168d30b8d1d56b55a5a957229ff89ca2e436bd5c2d69afa441727d",
+                "sha256:a33902c1861ec97cd92c7ded7ba4d6182bf5f91ed1228557f02ce5d3e5636301",
+                "sha256:aaf44e8d3b0adaccaab7c19a6987850e8ad4130f8f5c99e203e8fb376d3f5abb",
+                "sha256:b51e3624b9d05028181dd493588c28daba04ea901e9ca777e91897d4d82c9d32",
+                "sha256:bad6bd98ab2e41c34aa9c80b8d9737e07d92a53df4f74d3ada1458b0b516ccff",
+                "sha256:c27d7396e53a4daab0fdd2cd7181693797b5cedac1996855841be97fbf72d1de",
+                "sha256:d6b30809ac4da6d25c51d0411ce034aa1c9b1f2eb20892bccede25a2ed70a70d",
+                "sha256:ddf031ba9ddf0f1aeab0850efd7783121763600ca9f85dd3ee11ae97684c9ed6",
+                "sha256:edf6744a906a107b49d601d7134fa318fcce9c3f468b5e4ac1fbe26ef3a3c03c",
+                "sha256:f72aca38d8746adfb5018c58d41f683378e7d136e674281456ecc3e98ce09fbe",
+                "sha256:fd3f98d3add16fce2a2792f6cf42eff97908324c0ae5038b0aa4c198dc7a7ab5"
+            ],
+            "index": "pypi",
+            "version": "==0.54.0"
+        },
+        "numpy": {
+            "hashes": [
+                "sha256:1676b0a292dd3c99e49305a16d7a9f42a4ab60ec522eac0d3dd20cdf362ac010",
+                "sha256:16f221035e8bd19b9dc9a57159e38d2dd060b48e93e1d843c49cb370b0f415fd",
+                "sha256:43909c8bb289c382170e0282158a38cf306a8ad2ff6dfadc447e90f9961bef43",
+                "sha256:4e465afc3b96dbc80cf4a5273e5e2b1e3451286361b4af70ce1adb2984d392f9",
+                "sha256:55b745fca0a5ab738647d0e4db099bd0a23279c32b31a783ad2ccea729e632df",
+                "sha256:5d050e1e4bc9ddb8656d7b4f414557720ddcca23a5b88dd7cff65e847864c400",
+                "sha256:637d827248f447e63585ca3f4a7d2dfaa882e094df6cfa177cc9cf9cd6cdf6d2",
+                "sha256:6690080810f77485667bfbff4f69d717c3be25e5b11bb2073e76bb3f578d99b4",
+                "sha256:66fbc6fed94a13b9801fb70b96ff30605ab0a123e775a5e7a26938b717c5d71a",
+                "sha256:67d44acb72c31a97a3d5d33d103ab06d8ac20770e1c5ad81bdb3f0c086a56cf6",
+                "sha256:6ca2b85a5997dabc38301a22ee43c82adcb53ff660b89ee88dded6b33687e1d8",
+                "sha256:6e51534e78d14b4a009a062641f465cfaba4fdcb046c3ac0b1f61dd97c861b1b",
+                "sha256:70eb5808127284c4e5c9e836208e09d685a7978b6a216db85960b1a112eeace8",
+                "sha256:830b044f4e64a76ba71448fce6e604c0fc47a0e54d8f6467be23749ac2cbd2fb",
+                "sha256:8b7bb4b9280da3b2856cb1fc425932f46fba609819ee1c62256f61799e6a51d2",
+                "sha256:a9c65473ebc342715cb2d7926ff1e202c26376c0dcaaee85a1fd4b8d8c1d3b2f",
+                "sha256:c1c09247ccea742525bdb5f4b5ceeacb34f95731647fe55774aa36557dbb5fa4",
+                "sha256:c5bf0e132acf7557fc9bb8ded8b53bbbbea8892f3c9a1738205878ca9434206a",
+                "sha256:db250fd3e90117e0312b611574cd1b3f78bec046783195075cbd7ba9c3d73f16",
+                "sha256:e515c9a93aebe27166ec9593411c58494fa98e5fcc219e47260d9ab8a1cc7f9f",
+                "sha256:e55185e51b18d788e49fe8305fd73ef4470596b33fc2c1ceb304566b99c71a69",
+                "sha256:ea9cff01e75a956dbee133fa8e5b68f2f92175233de2f88de3a682dd94deda65",
+                "sha256:f1452578d0516283c87608a5a5548b0cdde15b99650efdfd85182102ef7a7c17",
+                "sha256:f39a995e47cb8649673cfa0579fbdd1cdd33ea497d1728a6cb194d6252268e48"
+            ],
+            "index": "pypi",
+            "version": "==1.20.3"
+        }
+    },
+    "develop": {}
+}
diff --git a/README.md b/README.md
index cefaf5bd..e067b9e4 100644
--- a/README.md
+++ b/README.md
@@ -5,19 +5,25 @@ Port of Generalized Watersheds Loading Functions - Enhanced (MapShed)
 
 ## Installation
 
-Install using `pip`. Ensure `numba` is installed first:
+Install using `pip`:
 
 ```bash
-$ pip install numba==0.38.1
 $ pip install gwlf-e
 ```
 
-## Testing
+## Development
 
-Run `python setup.py test` from within the project directory.
+Ensure you have Python 3.9 and [pipenv](https://pipenv.pypa.io/en/latest/) available. Then run:
 
-To run a manual test againt the model output and the expected output from a known gms file, you can run `python compare_output.py` or `python compare_output.py results.json` from within the test directory.
+```bash
+$ pipenv sync
+```
+
+### Testing
 
+```bash
+$ pipenv run nosetests
+```
 
 ## Deployments
 
diff --git a/gwlfe/AFOS/GrazingAnimals/Loads/GRAppManN.py b/gwlfe/AFOS/GrazingAnimals/Loads/GRAppManN.py
index 36f28fc2..77b436b9 100644
--- a/gwlfe/AFOS/GrazingAnimals/Loads/GRAppManN.py
+++ b/gwlfe/AFOS/GrazingAnimals/Loads/GRAppManN.py
@@ -1,7 +1,7 @@
 from numpy import zeros
 
-from InitGrN import InitGrN
-from InitGrN import InitGrN_f
+from .InitGrN import InitGrN
+from .InitGrN import InitGrN_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/AFOS/GrazingAnimals/Loads/GRInitBarnN.py b/gwlfe/AFOS/GrazingAnimals/Loads/GRInitBarnN.py
index 83e2f081..7c236091 100644
--- a/gwlfe/AFOS/GrazingAnimals/Loads/GRInitBarnN.py
+++ b/gwlfe/AFOS/GrazingAnimals/Loads/GRInitBarnN.py
@@ -1,7 +1,7 @@
 from numpy import zeros
 
-from GRAppManN import GRAppManN
-from GRAppManN import GRAppManN_f
+from .GRAppManN import GRAppManN
+from .GRAppManN import GRAppManN_f
 from gwlfe.AFOS.GrazingAnimals.Loads.GRAccManAppN import GRAccManAppN
 from gwlfe.AFOS.GrazingAnimals.Loads.GRAccManAppN import GRAccManAppN_f
 
diff --git a/gwlfe/AFOS/GrazingAnimals/Loads/GrazingN.py b/gwlfe/AFOS/GrazingAnimals/Loads/GrazingN.py
index 664334a4..7f5fb7bf 100644
--- a/gwlfe/AFOS/GrazingAnimals/Loads/GrazingN.py
+++ b/gwlfe/AFOS/GrazingAnimals/Loads/GrazingN.py
@@ -1,7 +1,7 @@
 from numpy import zeros
 
-from InitGrN import InitGrN
-from InitGrN import InitGrN_f
+from .InitGrN import InitGrN
+from .InitGrN import InitGrN_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/AFOS/GrazingAnimals/Loads/InitGrN.py b/gwlfe/AFOS/GrazingAnimals/Loads/InitGrN.py
index 6a8f35ee..55de25a4 100644
--- a/gwlfe/AFOS/GrazingAnimals/Loads/InitGrN.py
+++ b/gwlfe/AFOS/GrazingAnimals/Loads/InitGrN.py
@@ -1,7 +1,7 @@
 from numpy import sum
 
-from GRLoadN import GRLoadN
-from GRLoadN import GRLoadN_f
+from .GRLoadN import GRLoadN
+from .GRLoadN import GRLoadN_f
 from gwlfe.Input.Animals.GrazingAnimal import GrazingAnimal
 from gwlfe.Memoization import memoize
 from gwlfe.enums import YesOrNo
diff --git a/gwlfe/AFOS/GrazingAnimals/Losses/AvGRLostBarnN.py b/gwlfe/AFOS/GrazingAnimals/Losses/AvGRLostBarnN.py
index 2baf9a3c..1d0c7936 100644
--- a/gwlfe/AFOS/GrazingAnimals/Losses/AvGRLostBarnN.py
+++ b/gwlfe/AFOS/GrazingAnimals/Losses/AvGRLostBarnN.py
@@ -1,8 +1,8 @@
 from numpy import average
 from numpy import zeros
 
-from GRLostBarnN import GRLostBarnN
-from GRLostBarnN import GRLostBarnN_f
+from .GRLostBarnN import GRLostBarnN
+from .GRLostBarnN import GRLostBarnN_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN.py b/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN.py
index 6c41de63..1fcf4f7b 100644
--- a/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN.py
+++ b/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN.py
@@ -1,5 +1,5 @@
-from AvGRLostBarnNSum import AvGRLostBarnNSum
-from AvGRLostBarnNSum import AvGRLostBarnNSum_f
+from .AvGRLostBarnNSum import AvGRLostBarnNSum
+from .AvGRLostBarnNSum import AvGRLostBarnNSum_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN_2.py b/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN_2.py
index b8896611..68ed5345 100644
--- a/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN_2.py
+++ b/gwlfe/AFOS/GrazingAnimals/Losses/GRLBN_2.py
@@ -1,7 +1,7 @@
 from numpy import sum
 from numpy import zeros
 
-from GRLostBarnN import GRLostBarnN
+from .GRLostBarnN import GRLostBarnN
 
 
 def GRLBN_2(NYrs, GrazingAnimal_0, NumAnimals, AvgAnimalWt, AnimalDailyN, GRPctManApp, PctGrazing, GRBarnNRate,
diff --git a/gwlfe/AFOS/GrazingAnimals/Losses/GRLossN.py b/gwlfe/AFOS/GrazingAnimals/Losses/GRLossN.py
index f4d203d0..b07e473b 100644
--- a/gwlfe/AFOS/GrazingAnimals/Losses/GRLossN.py
+++ b/gwlfe/AFOS/GrazingAnimals/Losses/GRLossN.py
@@ -3,8 +3,8 @@
 from numpy import where
 from numpy import zeros
 
-from GRStreamN import GRStreamN
-from GRStreamN import GRStreamN_f
+from .GRStreamN import GRStreamN
+from .GRStreamN import GRStreamN_f
 from gwlfe.AFOS.GrazingAnimals.Loads.GrazingN import GrazingN
 from gwlfe.AFOS.GrazingAnimals.Loads.GrazingN import GrazingN_f
 from gwlfe.Memoization import memoize
diff --git a/gwlfe/AFOS/nonGrazingAnimals/Loads/InitNgN.py b/gwlfe/AFOS/nonGrazingAnimals/Loads/InitNgN.py
index a52844fa..6ee2eabb 100644
--- a/gwlfe/AFOS/nonGrazingAnimals/Loads/InitNgN.py
+++ b/gwlfe/AFOS/nonGrazingAnimals/Loads/InitNgN.py
@@ -1,7 +1,7 @@
 from numpy import sum
 
-from NGLoadN import NGLoadN
-from NGLoadN import NGLoadN_f
+from .NGLoadN import NGLoadN
+from .NGLoadN import NGLoadN_f
 from gwlfe.Input.Animals.GrazingAnimal import GrazingAnimal
 from gwlfe.Memoization import memoize
 from gwlfe.enums import YesOrNo
diff --git a/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAccManAppN.py b/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAccManAppN.py
index 37d7ddb5..28db68c8 100644
--- a/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAccManAppN.py
+++ b/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAccManAppN.py
@@ -1,8 +1,8 @@
 from numpy import maximum
 from numpy import zeros
 
-from InitNgN import InitNgN
-from InitNgN import InitNgN_f
+from .InitNgN import InitNgN
+from .InitNgN import InitNgN_f
 
 
 def NGAccManAppN(GrazingAnimal_0, NumAnimals, AvgAnimalWt, AnimalDailyN, NGPctManApp):
diff --git a/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAppManN.py b/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAppManN.py
index 1c5913d3..f30c015b 100644
--- a/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAppManN.py
+++ b/gwlfe/AFOS/nonGrazingAnimals/Loads/NGAppManN.py
@@ -1,7 +1,7 @@
 from numpy import zeros
 
-from InitNgN import InitNgN
-from InitNgN import InitNgN_f
+from .InitNgN import InitNgN
+from .InitNgN import InitNgN_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/AFOS/nonGrazingAnimals/Loads/NGInitBarnN.py b/gwlfe/AFOS/nonGrazingAnimals/Loads/NGInitBarnN.py
index 0aa1fb34..43fb93a1 100644
--- a/gwlfe/AFOS/nonGrazingAnimals/Loads/NGInitBarnN.py
+++ b/gwlfe/AFOS/nonGrazingAnimals/Loads/NGInitBarnN.py
@@ -1,10 +1,10 @@
 from numpy import maximum
 from numpy import zeros
 
-from NGAccManAppN import NGAccManAppN
-from NGAccManAppN import NGAccManAppN_f
-from NGAppManN import NGAppManN
-from NGAppManN import NGAppManN_f
+from .NGAccManAppN import NGAccManAppN
+from .NGAccManAppN import NGAccManAppN_f
+from .NGAppManN import NGAppManN
+from .NGAppManN import NGAppManN_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/AFOS/nonGrazingAnimals/Losses/NGLostBarnNSum.py b/gwlfe/AFOS/nonGrazingAnimals/Losses/NGLostBarnNSum.py
index c1cbc8a5..599278ca 100644
--- a/gwlfe/AFOS/nonGrazingAnimals/Losses/NGLostBarnNSum.py
+++ b/gwlfe/AFOS/nonGrazingAnimals/Losses/NGLostBarnNSum.py
@@ -1,6 +1,6 @@
 from numpy import sum
 
-from NGLostBarnN import NGLostBarnN
+from .NGLostBarnN import NGLostBarnN
 
 
 def NGLostBarnNSum(NYrs, NGPctManApp, GrazingAnimal_0, NumAnimals, AvgAnimalWt, AnimalDailyN, NGBarnNRate, Prec,
diff --git a/gwlfe/AFOS_old.py b/gwlfe/AFOS_old.py
index 8d2ec855..7df8f7f8 100644
--- a/gwlfe/AFOS_old.py
+++ b/gwlfe/AFOS_old.py
@@ -3,10 +3,10 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from Input.LandUse.TotAreaMeters import TotAreaMeters
-from MultiUse_Fxns.Discharge.StreamFlow_1 import StreamFlow_1_f
-from MultiUse_Fxns.LossFactAdj import LossFactAdj_f
-from MultiUse_Fxns.Runoff.UrbRunoffLiter import UrbRunoffLiter_f
+from .Input.LandUse.TotAreaMeters import TotAreaMeters
+from .MultiUse_Fxns.Discharge.StreamFlow_1 import StreamFlow_1_f
+from .MultiUse_Fxns.LossFactAdj import LossFactAdj_f
+from .MultiUse_Fxns.Runoff.UrbRunoffLiter import UrbRunoffLiter_f
 
 """
 Imported from AFOS.bas
diff --git a/gwlfe/AnnualMeans.py b/gwlfe/AnnualMeans.py
index 5159d793..8c9ccb13 100644
--- a/gwlfe/AnnualMeans.py
+++ b/gwlfe/AnnualMeans.py
@@ -8,19 +8,19 @@
 """
 
 import logging
-from Input.WaterBudget import Precipitation
-from Input.WaterBudget.AvEvapoTrans import AvEvapoTrans_f
-from MultiUse_Fxns.PtSrcFlow import AvPtSrcFlow_f
-from MultiUse_Fxns.Erosion.AvStreamBankEros import AvStreamBankEros_f
-from Input.LandUse.Ag.AvTileDrain import AvTileDrain_f
-from Input.WaterBudget.AvWithdrawal import AvWithdrawal_f
-from Input.WaterBudget.AvGroundWater import AvGroundWater_f
-from MultiUse_Fxns.Runoff.AvRunoff import AvRunoff_f
-from MultiUse_Fxns.Erosion.AvErosion import AvErosion_f
-from MultiUse_Fxns.Erosion.AvSedYield import AvSedYield_f
-from MultiUse_Fxns.Runoff.LuRunoff import LuRunoff_f
-from Output.Loading.LuTotPhos import LuTotPhos_f
-from Output.Loading.LuTotNitr import LuTotNitr_f
+from .Input.WaterBudget import Precipitation
+from .Input.WaterBudget.AvEvapoTrans import AvEvapoTrans_f
+from .MultiUse_Fxns.PtSrcFlow import AvPtSrcFlow_f
+from .MultiUse_Fxns.Erosion.AvStreamBankEros import AvStreamBankEros_f
+from .Input.LandUse.Ag.AvTileDrain import AvTileDrain_f
+from .Input.WaterBudget.AvWithdrawal import AvWithdrawal_f
+from .Input.WaterBudget.AvGroundWater import AvGroundWater_f
+from .MultiUse_Fxns.Runoff.AvRunoff import AvRunoff_f
+from .MultiUse_Fxns.Erosion.AvErosion import AvErosion_f
+from .MultiUse_Fxns.Erosion.AvSedYield import AvSedYield_f
+from .MultiUse_Fxns.Runoff.LuRunoff import LuRunoff_f
+from .Output.Loading.LuTotPhos import LuTotPhos_f
+from .Output.Loading.LuTotNitr import LuTotNitr_f
 
 log = logging.getLogger(__name__)
 
diff --git a/gwlfe/BMPs/Stream/UrbLoadRed.py b/gwlfe/BMPs/Stream/UrbLoadRed.py
index 0d60c761..06f3384d 100644
--- a/gwlfe/BMPs/Stream/UrbLoadRed.py
+++ b/gwlfe/BMPs/Stream/UrbLoadRed.py
@@ -7,7 +7,7 @@
 from gwlfe.MultiUse_Fxns.Discharge.AdjUrbanQTotal import AdjUrbanQTotal_f
 
 try:
-    from UrbLoadRed_inner_compiled import UrbLoadRed_inner
+    from .UrbLoadRed_inner_compiled import UrbLoadRed_inner
 except ImportError:
     print("Unable to import compiled UrbLoadRed_inner, using slower version")
     from gwlfe.BMPs.Stream.UrbLoadRed_inner import UrbLoadRed_inner
diff --git a/gwlfe/CalcLoads.py b/gwlfe/CalcLoads.py
index 40a773bc..6590f559 100644
--- a/gwlfe/CalcLoads.py
+++ b/gwlfe/CalcLoads.py
@@ -9,20 +9,20 @@
 
 from numpy import zeros
 
-from Input.LandUse.AreaTotal import AreaTotal_f
-from Input.WaterBudget.GroundWatLE_1 import GroundWatLE_1_f
-from Input.LandUse.Ag.TileDrain import TileDrain_f
-from Input.LandUse.TotAreaMeters import TotAreaMeters
-from MultiUse_Fxns.Erosion.SedDelivRatio import SedDelivRatio
-from MultiUse_Fxns.Erosion.Erosion_1 import Erosion_1_f
-from Output.Loading.SedYield import SedYield_f
-from Output.Loading.LuLoad import LuLoad_f
-from Output.Loading.LuDisLoad import LuDisLoad_f
-from MultiUse_Fxns.Erosion.LuErosion import LuErosion_f
-from MultiUse_Fxns.Runoff.nRunoff import nRunoff_f
-from MultiUse_Fxns.Runoff.pRunoff import pRunoff_f
-from Output.Loading.DisLoad import DisLoad_f
-from Output.Loading.Load import Load_f
+from .Input.LandUse.AreaTotal import AreaTotal_f
+from .Input.WaterBudget.GroundWatLE_1 import GroundWatLE_1_f
+from .Input.LandUse.Ag.TileDrain import TileDrain_f
+from .Input.LandUse.TotAreaMeters import TotAreaMeters
+from .MultiUse_Fxns.Erosion.SedDelivRatio import SedDelivRatio
+from .MultiUse_Fxns.Erosion.Erosion_1 import Erosion_1_f
+from .Output.Loading.SedYield import SedYield_f
+from .Output.Loading.LuLoad import LuLoad_f
+from .Output.Loading.LuDisLoad import LuDisLoad_f
+from .MultiUse_Fxns.Erosion.LuErosion import LuErosion_f
+from .MultiUse_Fxns.Runoff.nRunoff import nRunoff_f
+from .MultiUse_Fxns.Runoff.pRunoff import pRunoff_f
+from .Output.Loading.DisLoad import DisLoad_f
+from .Output.Loading.Load import Load_f
 
 
 def CalculateLoads(z, Y):
diff --git a/gwlfe/DailyArrayConverter.py b/gwlfe/DailyArrayConverter.py
index 75d539b7..4e6709c8 100644
--- a/gwlfe/DailyArrayConverter.py
+++ b/gwlfe/DailyArrayConverter.py
@@ -72,7 +72,7 @@ def mask_builder(DaysMonth):
 
 
 def ymd_to_daily(ymd_array, DaysMonth):
-    month_maps = map(lambda x: leap_year if x[1] == 29 else non_leap_year, DaysMonth)
+    month_maps = [leap_year if x[1] == 29 else non_leap_year for x in DaysMonth]
     mask = ravel(array(month_maps))
     x = ma.array(ymd_array, mask=mask)
     return x[~x.mask]
@@ -80,7 +80,7 @@ def ymd_to_daily(ymd_array, DaysMonth):
 
 def daily_to_ymd(daily_array, NYrs, DaysMonth):
     result = zeros((NYrs * 12 * 31,))
-    month_maps = map(lambda x: leap_year if x[1] == 29 else non_leap_year, DaysMonth)
+    month_maps = [leap_year if x[1] == 29 else non_leap_year for x in DaysMonth]
     mask = ravel(array(month_maps))
     x = ma.array(result, mask=mask)
     x[~x.mask] = daily_array
diff --git a/gwlfe/Input/WaterBudget/AMC5.py b/gwlfe/Input/WaterBudget/AMC5.py
index 2c82d28e..a5a182a6 100644
--- a/gwlfe/Input/WaterBudget/AMC5.py
+++ b/gwlfe/Input/WaterBudget/AMC5.py
@@ -7,7 +7,7 @@
 from gwlfe.Memoization import memoize
 
 try:
-    from AMC5_yesterday_inner_compiled import AMC5_yesterday_inner
+    from .AMC5_yesterday_inner_compiled import AMC5_yesterday_inner
 except ImportError:
     print("Unable to import compiled AMC5_yesterday_inner, using slower version")
     from gwlfe.Input.WaterBudget.AMC5_yesterday_inner import AMC5_yesterday_inner
diff --git a/gwlfe/Input/WaterBudget/ET_1.py b/gwlfe/Input/WaterBudget/ET_1.py
index 235cae22..39ddd072 100644
--- a/gwlfe/Input/WaterBudget/ET_1.py
+++ b/gwlfe/Input/WaterBudget/ET_1.py
@@ -5,7 +5,7 @@
 from gwlfe.Input.WaterBudget.Infiltration import Infiltration_f
 
 try:
-    from UnsatStor_inner_compiled import UnsatStor_inner
+    from .UnsatStor_inner_compiled import UnsatStor_inner
 except ImportError:
     print("Unable to import compiled UnsatStor_inner, using slower version")
     from gwlfe.Input.WaterBudget.UnsatStor_inner import UnsatStor_inner
diff --git a/gwlfe/Input/WaterBudget/GrFlow.py b/gwlfe/Input/WaterBudget/GrFlow.py
index cfd1fb77..11f8e105 100644
--- a/gwlfe/Input/WaterBudget/GrFlow.py
+++ b/gwlfe/Input/WaterBudget/GrFlow.py
@@ -5,7 +5,7 @@
 from gwlfe.Memoization import memoize
 
 try:
-    from DeepSeep_inner_compiled import DeepSeep_inner
+    from .DeepSeep_inner_compiled import DeepSeep_inner
 except ImportError:
     print("Unable to import compiled DeepSeep_inner, using slower version")
     from gwlfe.Input.WaterBudget.DeepSeep_inner import DeepSeep_inner
diff --git a/gwlfe/Input/WaterBudget/InitSnow.py b/gwlfe/Input/WaterBudget/InitSnow.py
index 335005d4..34ed04fe 100644
--- a/gwlfe/Input/WaterBudget/InitSnow.py
+++ b/gwlfe/Input/WaterBudget/InitSnow.py
@@ -3,7 +3,7 @@
 from gwlfe.Memoization import memoize
 
 try:
-    from InitSnow_f_inner_compiled import InitSnow_f_inner
+    from .InitSnow_f_inner_compiled import InitSnow_f_inner
 except ImportError:
     print("Unable to import compiled InitSnow_inner, using slower version")
     from gwlfe.Input.WaterBudget.InitSnow_inner import InitSnow_f_inner
diff --git a/gwlfe/Input/WaterBudget/InitSnowYesterday.py b/gwlfe/Input/WaterBudget/InitSnowYesterday.py
index 58b81d36..f647ac03 100644
--- a/gwlfe/Input/WaterBudget/InitSnowYesterday.py
+++ b/gwlfe/Input/WaterBudget/InitSnowYesterday.py
@@ -1,7 +1,7 @@
 from gwlfe.Memoization import memoize
 
 try:
-    from InitSnowYesterday_inner_compiled import InitSnowYesterday_inner
+    from .InitSnowYesterday_inner_compiled import InitSnowYesterday_inner
 except ImportError:
     print("Unable to import compiled InitSnowYesterday_inner, using slower version")
     from gwlfe.Input.WaterBudget.InitSnowYesterday_inner import InitSnowYesterday_inner
diff --git a/gwlfe/Input/WaterBudget/Percolation.py b/gwlfe/Input/WaterBudget/Percolation.py
index b5a77966..be2ecb9b 100644
--- a/gwlfe/Input/WaterBudget/Percolation.py
+++ b/gwlfe/Input/WaterBudget/Percolation.py
@@ -6,7 +6,7 @@
 from gwlfe.Memoization import memoize
 
 try:
-    from Percolation_inner_compiled import Percolation_inner
+    from .Percolation_inner_compiled import Percolation_inner
 except ImportError:
     print("Unable to import compiled Percolation_inner, using slower version")
     from gwlfe.Input.WaterBudget.Percolation_inner import Percolation_inner
diff --git a/gwlfe/Input/WaterBudget/SatStor.py b/gwlfe/Input/WaterBudget/SatStor.py
index 050dd653..6a54ad58 100644
--- a/gwlfe/Input/WaterBudget/SatStor.py
+++ b/gwlfe/Input/WaterBudget/SatStor.py
@@ -5,7 +5,7 @@
 from gwlfe.Memoization import memoize
 
 try:
-    from DeepSeep_inner_compiled import DeepSeep_inner
+    from .DeepSeep_inner_compiled import DeepSeep_inner
 except ImportError:
     print("Unable to import compiled DeepSeep_inner, using slower version")
     from gwlfe.Input.WaterBudget.DeepSeep_inner import DeepSeep_inner
diff --git a/gwlfe/Input/WaterBudget/SatStorCarryOver.py b/gwlfe/Input/WaterBudget/SatStorCarryOver.py
index b079be92..596eaaae 100644
--- a/gwlfe/Input/WaterBudget/SatStorCarryOver.py
+++ b/gwlfe/Input/WaterBudget/SatStorCarryOver.py
@@ -4,7 +4,7 @@
 from gwlfe.Input.WaterBudget.Percolation import Percolation_f
 
 try:
-    from DeepSeep_inner_compiled import DeepSeep_inner
+    from .DeepSeep_inner_compiled import DeepSeep_inner
 except ImportError:
     print("Unable to import compiled DeepSeep_inner, using slower version")
     from gwlfe.Input.WaterBudget.DeepSeep_inner import DeepSeep_inner
diff --git a/gwlfe/Input/WaterBudget/SatStor_fast.py b/gwlfe/Input/WaterBudget/SatStor_fast.py
index 134f7c1b..bc5591f5 100644
--- a/gwlfe/Input/WaterBudget/SatStor_fast.py
+++ b/gwlfe/Input/WaterBudget/SatStor_fast.py
@@ -6,7 +6,7 @@
 from gwlfe.Memoization import memoize
 
 try:
-    from DeepSeep_inner_compiled import DeepSeep_inner
+    from .DeepSeep_inner_compiled import DeepSeep_inner
 except ImportError:
     print("Unable to import compiled DeepSeep_inner, using slower version")
     from gwlfe.Input.WaterBudget.DeepSeep_inner import DeepSeep_inner
diff --git a/gwlfe/Input/WaterBudget/UnSatStorCarryover.py b/gwlfe/Input/WaterBudget/UnSatStorCarryover.py
index 12ca55a8..ad012c1c 100644
--- a/gwlfe/Input/WaterBudget/UnSatStorCarryover.py
+++ b/gwlfe/Input/WaterBudget/UnSatStorCarryover.py
@@ -5,7 +5,7 @@
 from gwlfe.Input.WaterBudget.Infiltration import Infiltration_f
 
 try:
-    from UnsatStor_inner_compiled import UnsatStor_inner
+    from .UnsatStor_inner_compiled import UnsatStor_inner
 except ImportError:
     print("Unable to import compiled UnsatStor_inner, using slower version")
     from gwlfe.Input.WaterBudget.UnsatStor_inner import UnsatStor_inner
diff --git a/gwlfe/LoadReductions.py b/gwlfe/LoadReductions.py
index 53b0dff6..704ffa9e 100644
--- a/gwlfe/LoadReductions.py
+++ b/gwlfe/LoadReductions.py
@@ -8,7 +8,7 @@
 """
 
 import logging
-from BMPs.Stream.FilterEff import FilterEff
+from .BMPs.Stream.FilterEff import FilterEff
 
 log = logging.getLogger(__name__)
 
diff --git a/gwlfe/MultiUse_Fxns/Discharge/AdjUrbanQTotal.py b/gwlfe/MultiUse_Fxns/Discharge/AdjUrbanQTotal.py
index f6be2260..4688eb9e 100644
--- a/gwlfe/MultiUse_Fxns/Discharge/AdjUrbanQTotal.py
+++ b/gwlfe/MultiUse_Fxns/Discharge/AdjUrbanQTotal.py
@@ -12,7 +12,7 @@
 from gwlfe.MultiUse_Fxns.Discharge.UrbanQTotal import UrbanQTotal_f
 
 try:
-    from AdjUrbanQTotal_inner_compiled import AdjUrbanQTotal_inner
+    from .AdjUrbanQTotal_inner_compiled import AdjUrbanQTotal_inner
 except ImportError:
     print("Unable to import compiled AdjUrbanQTotal_inner, using slower version")
     from gwlfe.MultiUse_Fxns.Discharge.AdjUrbanQTotal_inner import AdjUrbanQTotal_inner
diff --git a/gwlfe/MultiUse_Fxns/Runoff/CNum.py b/gwlfe/MultiUse_Fxns/Runoff/CNum.py
index 01075c52..41f25fc1 100644
--- a/gwlfe/MultiUse_Fxns/Runoff/CNum.py
+++ b/gwlfe/MultiUse_Fxns/Runoff/CNum.py
@@ -11,7 +11,7 @@
 from gwlfe.MultiUse_Fxns.Runoff.NewCN import NewCN, NewCN_f
 
 try:
-    from CNum_inner_compiled import CNum_inner
+    from .CNum_inner_compiled import CNum_inner
 except ImportError:
     print("Unable to import compiled CNum_inner, using slower version")
     from gwlfe.MultiUse_Fxns.Runoff.CNum_inner import CNum_inner
diff --git a/gwlfe/MultiUse_Fxns/Runoff/CNumImperv.py b/gwlfe/MultiUse_Fxns/Runoff/CNumImperv.py
index 4d6b38a8..9db91a11 100644
--- a/gwlfe/MultiUse_Fxns/Runoff/CNumImperv.py
+++ b/gwlfe/MultiUse_Fxns/Runoff/CNumImperv.py
@@ -12,7 +12,7 @@
 from gwlfe.MultiUse_Fxns.Runoff.CNI import CNI, CNI_f
 
 try:
-    from CNumImperv_inner_compiled import CNumImperv_inner
+    from .CNumImperv_inner_compiled import CNumImperv_inner
 except ImportError:
     print("Unable to import compiled CNumImper_inner, using slower version")
     from gwlfe.MultiUse_Fxns.Runoff.CNumImperv_inner import CNumImperv_inner
diff --git a/gwlfe/MultiUse_Fxns/Runoff/CNumPerv.py b/gwlfe/MultiUse_Fxns/Runoff/CNumPerv.py
index 70371809..380a9585 100644
--- a/gwlfe/MultiUse_Fxns/Runoff/CNumPerv.py
+++ b/gwlfe/MultiUse_Fxns/Runoff/CNumPerv.py
@@ -11,7 +11,7 @@
 from gwlfe.MultiUse_Fxns.Runoff.CNP import CNP, CNP_f
 
 try:
-    from CNumPerv_inner_compiled import CNumPerv_inner
+    from .CNumPerv_inner_compiled import CNumPerv_inner
 except ImportError:
     print("Unable to import compiled CNumPerv_f_inner, using slower version")
     from gwlfe.MultiUse_Fxns.Runoff.CNumPerv_inner import CNumPerv_inner
diff --git a/gwlfe/MultiUse_Fxns/Runoff/WashImperv.py b/gwlfe/MultiUse_Fxns/Runoff/WashImperv.py
index a0351875..18c48172 100644
--- a/gwlfe/MultiUse_Fxns/Runoff/WashImperv.py
+++ b/gwlfe/MultiUse_Fxns/Runoff/WashImperv.py
@@ -11,7 +11,7 @@
 from gwlfe.MultiUse_Fxns.Runoff.QrunI import QrunI_f
 
 try:
-    from WashImperv_inner_compiled import WashImperv_inner
+    from .WashImperv_inner_compiled import WashImperv_inner
 except ImportError:
     print("Unable to import compiled WashPerv_inner, using slower version")
     from gwlfe.MultiUse_Fxns.Runoff.WashImperv_inner import WashImperv_inner
diff --git a/gwlfe/MultiUse_Fxns/Runoff/WashPerv.py b/gwlfe/MultiUse_Fxns/Runoff/WashPerv.py
index f87b037e..a31918f1 100644
--- a/gwlfe/MultiUse_Fxns/Runoff/WashPerv.py
+++ b/gwlfe/MultiUse_Fxns/Runoff/WashPerv.py
@@ -11,7 +11,7 @@
 from gwlfe.MultiUse_Fxns.Runoff.QrunP import QrunP_f
 
 try:
-    from WashPerv_inner_compiled import WashPerv_inner
+    from .WashPerv_inner_compiled import WashPerv_inner
 except ImportError:
     print("Unable to import compiled WashPerv_inner, using slower version")
     from gwlfe.MultiUse_Fxns.Runoff.WashPerv_inner import WashPerv_inner
diff --git a/gwlfe/Output/AvAnimalNSum/AvAnimalN.py b/gwlfe/Output/AvAnimalNSum/AvAnimalN.py
index 1396c28c..5cdbe2b0 100644
--- a/gwlfe/Output/AvAnimalNSum/AvAnimalN.py
+++ b/gwlfe/Output/AvAnimalNSum/AvAnimalN.py
@@ -1,8 +1,8 @@
 from numpy import sum
 from numpy import zeros
 
-from AnimalN import AnimalN
-from AnimalN import AnimalN_f
+from .AnimalN import AnimalN
+from .AnimalN import AnimalN_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/Output/AvAnimalNSum/AvAnimalNSum.py b/gwlfe/Output/AvAnimalNSum/AvAnimalNSum.py
index ba25cb8d..8f77c1ff 100644
--- a/gwlfe/Output/AvAnimalNSum/AvAnimalNSum.py
+++ b/gwlfe/Output/AvAnimalNSum/AvAnimalNSum.py
@@ -1,7 +1,7 @@
 from numpy import sum as npsum
 
-from AvAnimalN import AvAnimalN
-from AvAnimalN import AvAnimalN_f
+from .AvAnimalN import AvAnimalN
+from .AvAnimalN import AvAnimalN_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/Output/AvAnimalNSum/AvAnimalNSum_1.py b/gwlfe/Output/AvAnimalNSum/AvAnimalNSum_1.py
index 41ecacb6..65b00c5d 100644
--- a/gwlfe/Output/AvAnimalNSum/AvAnimalNSum_1.py
+++ b/gwlfe/Output/AvAnimalNSum/AvAnimalNSum_1.py
@@ -1,5 +1,5 @@
-from N7b import N7b
-from N7b import N7b_f
+from .N7b import N7b
+from .N7b import N7b_f
 from gwlfe.Memoization import memoize
 
 
diff --git a/gwlfe/Output/AvAnimalNSum/N7b.py b/gwlfe/Output/AvAnimalNSum/N7b.py
index efa90e1c..961f7dcd 100644
--- a/gwlfe/Output/AvAnimalNSum/N7b.py
+++ b/gwlfe/Output/AvAnimalNSum/N7b.py
@@ -1,4 +1,4 @@
-from AvAnimalNSum import AvAnimalNSum
+from .AvAnimalNSum import AvAnimalNSum
 from gwlfe.BMPs.AgAnimal.NAGBUFFER import NAGBUFFER
 from gwlfe.BMPs.AgAnimal.NAGBUFFER import NAGBUFFER_f
 from gwlfe.BMPs.AgAnimal.NAWMSL import NAWMSL
diff --git a/gwlfe/Output/AvAnimalNSum/N7b_2.py b/gwlfe/Output/AvAnimalNSum/N7b_2.py
index 1f99af3b..5d3ea512 100644
--- a/gwlfe/Output/AvAnimalNSum/N7b_2.py
+++ b/gwlfe/Output/AvAnimalNSum/N7b_2.py
@@ -1,6 +1,6 @@
 from numpy import zeros
 
-from N7b import N7b
+from .N7b import N7b
 from gwlfe.AFOS.GrazingAnimals.Losses.GRLBN_2 import GRLBN_2
 from gwlfe.AFOS.GrazingAnimals.Losses.GRStreamN import AvGRStreamN
 from gwlfe.AFOS.nonGrazingAnimals.Losses.NGLostBarnNSum import NGLostBarnNSum
diff --git a/gwlfe/Parser.py b/gwlfe/Parser.py
index d2050eba..eb450a77 100644
--- a/gwlfe/Parser.py
+++ b/gwlfe/Parser.py
@@ -9,17 +9,17 @@
 
 from numpy import zeros
 
-from AFOS.GrazingAnimals.Loads.InitGrN import InitGrN_f
-from AFOS.GrazingAnimals.Losses.GRLBN_2 import GRLBN_2
-from AFOS.GrazingAnimals.Losses.GRStreamN import AvGRStreamN_f
-from AFOS.nonGrazingAnimals.Loads.InitNgN import InitNgN_f
-from AFOS.nonGrazingAnimals.Losses.NGLostBarnNSum import NGLostBarnNSum
-from Input.WaterBudget.AntMoist import AntMoist
-from Input.WaterBudget.SatStorCarryOver import SatStorCarryOver_f
-from Input.WaterBudget.UnSatStorCarryover import UnSatStorCarryover_f
-from MultiUse_Fxns.Runoff.CNI import CNI_f
-from MultiUse_Fxns.Runoff.CNP import CNP_f
-from Output.AvAnimalNSum.N7b_2 import N7b_2
+from .AFOS.GrazingAnimals.Loads.InitGrN import InitGrN_f
+from .AFOS.GrazingAnimals.Losses.GRLBN_2 import GRLBN_2
+from .AFOS.GrazingAnimals.Losses.GRStreamN import AvGRStreamN_f
+from .AFOS.nonGrazingAnimals.Loads.InitNgN import InitNgN_f
+from .AFOS.nonGrazingAnimals.Losses.NGLostBarnNSum import NGLostBarnNSum
+from .Input.WaterBudget.AntMoist import AntMoist
+from .Input.WaterBudget.SatStorCarryOver import SatStorCarryOver_f
+from .Input.WaterBudget.UnSatStorCarryover import UnSatStorCarryover_f
+from .MultiUse_Fxns.Runoff.CNI import CNI_f
+from .MultiUse_Fxns.Runoff.CNP import CNP_f
+from .Output.AvAnimalNSum.N7b_2 import N7b_2
 from .datamodel import DataModel
 from .enums import YesOrNo, ETflag, GrowFlag, LandUse, SweepType
 
@@ -1253,7 +1253,7 @@ def next(self, typ):
         or type. If a scalar value is passed instead, assert that the
         next token value matches and raise a ValueError if it does not.
         """
-        value, line_no, col_no = self.fp.next()
+        value, line_no, col_no = next(self.fp)
 
         if callable(typ):
             try:
@@ -2084,7 +2084,7 @@ def writerow(self, row):
         self.fp.writerow([self.serialize_value(col) for col in row])
 
     def serialize_value(self, value):
-        if isinstance(value, basestring):
+        if isinstance(value, str):
             return self.serialize_enum(value)
         return value
 
diff --git a/gwlfe/PrelimCalculations.py b/gwlfe/PrelimCalculations.py
index eb6f7086..9ea4343a 100644
--- a/gwlfe/PrelimCalculations.py
+++ b/gwlfe/PrelimCalculations.py
@@ -8,7 +8,7 @@
 """
 
 import logging
-from enums import LandUse
+from .enums import LandUse
 
 log = logging.getLogger(__name__)
 
diff --git a/gwlfe/ReadGwlfDataFile.py b/gwlfe/ReadGwlfDataFile.py
index 42b9158d..93620554 100644
--- a/gwlfe/ReadGwlfDataFile.py
+++ b/gwlfe/ReadGwlfDataFile.py
@@ -10,22 +10,22 @@
 """
 
 import logging
-from Input.WaterBudget.FlowDays import FlowDays
+from .Input.WaterBudget.FlowDays import FlowDays
 from .enums import SweepType, YesOrNo
 from . import PrelimQualCalculations
 
 log = logging.getLogger(__name__)
 
-from AFOS.GrazingAnimals.Loads.GrazingN import GrazingN_f
-from AFOS.GrazingAnimals.Losses.GRStreamN import GRStreamN_f
-from AFOS.GrazingAnimals.Loads.GRAccManAppN import GRAccManAppN_f
-from AFOS.nonGrazingAnimals.Loads.NGAppManN import NGAppManN_f
-from AFOS.nonGrazingAnimals.Losses.NGLostBarnN import NGLostBarnN_f
-from AFOS.GrazingAnimals.Losses.GRLostBarnN import GRLostBarnN_f
-from AFOS.GrazingAnimals.Losses.GRLostManN import GRLostManN_f
-from AFOS.nonGrazingAnimals.Losses.NGLostManN import NGLostManN_f
-from AFOS.GrazingAnimals.Losses.GRLossN import GRLossN_f
-from Input.Animals.GrazingAnimal import GrazingAnimal
+from .AFOS.GrazingAnimals.Loads.GrazingN import GrazingN_f
+from .AFOS.GrazingAnimals.Losses.GRStreamN import GRStreamN_f
+from .AFOS.GrazingAnimals.Loads.GRAccManAppN import GRAccManAppN_f
+from .AFOS.nonGrazingAnimals.Loads.NGAppManN import NGAppManN_f
+from .AFOS.nonGrazingAnimals.Losses.NGLostBarnN import NGLostBarnN_f
+from .AFOS.GrazingAnimals.Losses.GRLostBarnN import GRLostBarnN_f
+from .AFOS.GrazingAnimals.Losses.GRLostManN import GRLostManN_f
+from .AFOS.nonGrazingAnimals.Losses.NGLostManN import NGLostManN_f
+from .AFOS.GrazingAnimals.Losses.GRLossN import GRLossN_f
+from .Input.Animals.GrazingAnimal import GrazingAnimal
 
 
 def ReadAllData(z):
diff --git a/gwlfe/StreamBank.py b/gwlfe/StreamBank.py
index 6ec29b4a..0fd5c7be 100644
--- a/gwlfe/StreamBank.py
+++ b/gwlfe/StreamBank.py
@@ -8,13 +8,13 @@
 """
 
 import logging
-from Input.LandUse.AreaTotal import AreaTotal_f
-from Input.LandUse.Ag.TileDrain import TileDrain_f
-from Output.Loading.StreamBankEros_1 import StreamBankEros_1_f
-from Input.LandUse.Ag.AGSTRM import AGSTRM_f
-from Output.Loading.StreamBankN_1 import StreamBankN_1_f
-from Output.AvAnimalNSum.AnimalN import AnimalN_f
-from Output.Loading.StreamBankEros import StreamBankEros_f
+from .Input.LandUse.AreaTotal import AreaTotal_f
+from .Input.LandUse.Ag.AGSTRM import AGSTRM_f
+from .Input.LandUse.Ag.TileDrain import TileDrain_f
+from .Output.AvAnimalNSum.AnimalN import AnimalN_f
+from .Output.Loading.StreamBankEros import StreamBankEros_f
+from .Output.Loading.StreamBankEros_1 import StreamBankEros_1_f
+from .Output.Loading.StreamBankN_1 import StreamBankN_1_f
 
 log = logging.getLogger(__name__)
 
diff --git a/gwlfe/WriteOutputFiles.py b/gwlfe/WriteOutputFiles.py
index 46ac5334..6bda8b7d 100644
--- a/gwlfe/WriteOutputFiles.py
+++ b/gwlfe/WriteOutputFiles.py
@@ -8,30 +8,30 @@
 # from numpy import round
 from numpy import zeros
 
-import LoadReductions
-from Input.Animals.TotAEU import TotAEU_f
-from Input.Animals.TotLAEU import TotLAEU
-from Input.Animals.TotPAEU import TotPAEU_f
-from Input.LandUse.Ag.AvTileDrain import AvTileDrain_f
-from Input.LandUse.AreaTotal import AreaTotal_f
-from Input.WaterBudget.AvEvapoTrans import AvEvapoTrans_f
-from Input.WaterBudget.AvGroundWater import AvGroundWater_f
-from Input.WaterBudget.AvWithdrawal import AvWithdrawal_f
-from MultiUse_Fxns.AttenN import AttenN
-from MultiUse_Fxns.Constants import NPConvert
-from MultiUse_Fxns.Erosion.AvErosion import AvErosion_f
-from MultiUse_Fxns.Erosion.AvSedYield import AvSedYield
-from MultiUse_Fxns.Erosion.AvSedYield import AvSedYield_f
-from MultiUse_Fxns.Erosion.AvStreamBankNSum import AvStreamBankNSum_f
-from MultiUse_Fxns.Erosion.SedDelivRatio import SedDelivRatio
-from MultiUse_Fxns.Runoff.AvRunoff import AvRunoff_f
-from MultiUse_Fxns.Runoff.RetentFactorN import RetentFactorN
-from Output.AvAnimalNSum.AvAnimalNSum_1 import AvAnimalNSum_1_f
-from Output.AvAnimalNSum.N7b_1 import N7b_1_f
-from Output.Loading.LuTotNitr_1 import LuTotNitr_1_f
-from Output.Loading.LuTotPhos import LuTotPhos_f
-from Output.Loading.StreamBankNSum import StreamBankNSum_f
-from enums import YesOrNo, LandUse
+from . import LoadReductions
+from .Input.Animals.TotAEU import TotAEU_f
+from .Input.Animals.TotLAEU import TotLAEU
+from .Input.Animals.TotPAEU import TotPAEU_f
+from .Input.LandUse.Ag.AvTileDrain import AvTileDrain_f
+from .Input.LandUse.AreaTotal import AreaTotal_f
+from .Input.WaterBudget.AvEvapoTrans import AvEvapoTrans_f
+from .Input.WaterBudget.AvGroundWater import AvGroundWater_f
+from .Input.WaterBudget.AvWithdrawal import AvWithdrawal_f
+from .MultiUse_Fxns.AttenN import AttenN
+from .MultiUse_Fxns.Constants import NPConvert
+from .MultiUse_Fxns.Erosion.AvErosion import AvErosion_f
+from .MultiUse_Fxns.Erosion.AvSedYield import AvSedYield
+from .MultiUse_Fxns.Erosion.AvSedYield import AvSedYield_f
+from .MultiUse_Fxns.Erosion.AvStreamBankNSum import AvStreamBankNSum_f
+from .MultiUse_Fxns.Erosion.SedDelivRatio import SedDelivRatio
+from .MultiUse_Fxns.Runoff.AvRunoff import AvRunoff_f
+from .MultiUse_Fxns.Runoff.RetentFactorN import RetentFactorN
+from .Output.AvAnimalNSum.AvAnimalNSum_1 import AvAnimalNSum_1_f
+from .Output.AvAnimalNSum.N7b_1 import N7b_1_f
+from .Output.Loading.LuTotNitr_1 import LuTotNitr_1_f
+from .Output.Loading.LuTotPhos import LuTotPhos_f
+from .Output.Loading.StreamBankNSum import StreamBankNSum_f
+from .enums import YesOrNo, LandUse
 
 log = logging.getLogger(__name__)
 
diff --git a/gwlfe/datamodel.py b/gwlfe/datamodel.py
index 5abb96cc..86bab190 100644
--- a/gwlfe/datamodel.py
+++ b/gwlfe/datamodel.py
@@ -7,7 +7,6 @@
 from calendar import monthrange
 from decimal import Decimal
 
-from numpy import int
 from numpy import zeros
 from numpy import ndarray
 
diff --git a/gwlfe/gwlfe.py b/gwlfe/gwlfe.py
index f8032280..08082eba 100755
--- a/gwlfe/gwlfe.py
+++ b/gwlfe/gwlfe.py
@@ -15,21 +15,21 @@
 from numpy import zeros
 from numpy import seterr
 
-import ReadGwlfDataFile
-import PrelimCalculations
-import AFOS_old
-import CalcLoads
-import StreamBank
-import AnnualMeans
-import WriteOutputFiles
-from Input.WaterBudget.InitSnow import InitSnow_f
-from Input.WaterBudget.GrowFactor import GrowFactor_f
-from Input.LandUse.TotAreaMeters import TotAreaMeters
-from Input.LandUse.Ag.AvTileDrain import AvTileDrain_f
-from Input.WaterBudget.AvWithdrawal import AvWithdrawal_f
-from Input.WaterBudget.AvGroundWater import AvGroundWater_f
-from MultiUse_Fxns.Runoff.AvRunoff import AvRunoff_f
-from Memoization import resetMemoization
+from . import ReadGwlfDataFile
+from . import PrelimCalculations
+from . import AFOS_old
+from . import CalcLoads
+from . import StreamBank
+from . import AnnualMeans
+from . import WriteOutputFiles
+from .Input.WaterBudget.InitSnow import InitSnow_f
+from .Input.WaterBudget.GrowFactor import GrowFactor_f
+from .Input.LandUse.TotAreaMeters import TotAreaMeters
+from .Input.LandUse.Ag.AvTileDrain import AvTileDrain_f
+from .Input.WaterBudget.AvWithdrawal import AvWithdrawal_f
+from .Input.WaterBudget.AvGroundWater import AvGroundWater_f
+from .MultiUse_Fxns.Runoff.AvRunoff import AvRunoff_f
+from .Memoization import resetMemoization
 
 log = logging.getLogger(__name__)
 
diff --git a/requirements.txt b/requirements.txt
index 3444d9c0..3219d1de 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,10 +1,6 @@
-certifi==2018.4.16
-enum34==1.1.6
+certifi==2021.5.30
 funcsigs==1.0.2
-llvmlite==0.23.2
-mock==2.0.0
+llvmlite==0.37.0
 nose==1.3.7
-numba==0.38.1
-numpy==1.14.5
-singledispatch==3.4.0.3
-six==1.11.0
+numpy==1.20.3
+numba==0.54.0
diff --git a/run.py b/run.py
index dba7a55c..bc5d377d 100755
--- a/run.py
+++ b/run.py
@@ -22,6 +22,7 @@ def main():
     parser = argparse.ArgumentParser(description='Run the GWLF-E model for a specified gms file.')
     parser.add_argument('input', type=str, nargs="+", help='Input GMS file')
     parser.add_argument('--output', type=str, nargs="?", help='Optional output file to write result of model run')
+    parser.add_argument('--json', type=str, nargs="?", help='Optional output file to write JSON result of model run')
 
     args = parser.parse_args()
 
@@ -39,6 +40,10 @@ def main():
                 test = Parser.GmsWriter(file)
                 test.write(z)
 
+        if (args.json != None):
+            with open(args.json, "w") as file:
+                json.dump(result, file, indent=2, sort_keys=True)
+
 
 if __name__ == '__main__':
     main()
diff --git a/setup.py b/setup.py
index 49d80c26..11278a8f 100644
--- a/setup.py
+++ b/setup.py
@@ -45,22 +45,18 @@
         'Intended Audience :: Developers',
         'Intended Audience :: Education',
         'License :: OSI Approved :: Apache Software License',
-        'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 3',
     ],
     keywords='gwlf-e watershed hydrology',
     packages=find_packages(exclude=['tests']),
+    python_requires=">=3.7",
     install_requires=[
-        'certifi==2018.4.16',
-        'enum34==1.1.6',
+        'certifi==2021.5.30',
         'funcsigs==1.0.2',
-        'llvmlite==0.23.2',
-        'mock==2.0.0',
+        'llvmlite==0.37.0',
         'nose==1.3.7',
-        'numba==0.38.1',
-        'numpy==1.14.5',
-        'singledispatch==3.4.0.3',
-        'six==1.11.0',
+        'numpy==1.20.3',
+        'numba==0.54.0',
     ],
     extras_require={
         'dev': [],
diff --git a/tox.ini b/tox.ini
index a4756296..b4c5d81a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,9 +1,9 @@
 [tox]
-envlist = py27
+envlist = py39
 
 [testenv]
 basepython =
-    py27: python2.7
+    py39: python3.9
 deps =
     check-manifest
     readme_renderer
@@ -11,9 +11,9 @@ deps =
     pytest
     -rrequirements.txt
 commands =
-    check-manifest --ignore tox.ini,test*
+    check-manifest --ignore tox.ini,test/**/*,Pipfile*
     python setup.py check -m -r -s
-    python setup.py test
+    nosetests --verbosity=2
 
 [flake8]
 exclude = .tox,*.egg,build,data


Test patch:
diff --git a/test/gmswritertests/test_gms_output.py b/test/gmswritertests/test_gms_output.py
index ea37ec67..c9835bd1 100644
--- a/test/gmswritertests/test_gms_output.py
+++ b/test/gmswritertests/test_gms_output.py
@@ -1,8 +1,7 @@
 import csv
 import os
 import unittest
-from StringIO import StringIO
-from itertools import izip
+from io import StringIO
 import json
 
 import numpy as np
@@ -35,8 +34,8 @@ def test_gms_output(self):
         output.seek(0)
         output_parsed = csv.reader(output, delimiter=",")
         error = False
-        for i, row in enumerate(izip(ground_truth, output_parsed)):
-            for j, column in enumerate(izip(row[0], row[1])):
+        for i, row in enumerate(zip(ground_truth, output_parsed)):
+            for j, column in enumerate(zip(row[0], row[1])):
                 ground_truth_val = column[0]
                 output_val = column[1]
                 try:
diff --git a/test/gmswritertests/test_gms_writer.py b/test/gmswritertests/test_gms_writer.py
index 0c58cb34..299a025d 100644
--- a/test/gmswritertests/test_gms_writer.py
+++ b/test/gmswritertests/test_gms_writer.py
@@ -1,8 +1,7 @@
 import csv
 import os
 import unittest
-from StringIO import StringIO
-from itertools import izip
+from io import StringIO
 import json
 
 import numpy as np
@@ -34,8 +33,8 @@ def test_gms_writer(self):
         ground_truth = csv.reader(self.output_file, delimiter=",")
         output_parsed = csv.reader(output, delimiter=",")
         error = False
-        for i, row in enumerate(izip(ground_truth, output_parsed)):
-            for j, column in enumerate(izip(row[0], row[1])):
+        for i, row in enumerate(zip(ground_truth, output_parsed)):
+            for j, column in enumerate(zip(row[0], row[1])):
                 ground_truth_val = column[0]
                 output_val = column[1]
                 try:
diff --git a/test/integrationtests/GMS8_output.json b/test/integrationtests/GMS8_output.json
index c97ef284..881e94db 100644
--- a/test/integrationtests/GMS8_output.json
+++ b/test/integrationtests/GMS8_output.json
@@ -136,23 +136,23 @@
     "SummaryLoads": [
         {
             "Source": "Total Loads", 
-            "TotalN": 132634.65269481204, 
-            "TotalP": 9927.403712691108, 
-            "Sediment": 3407808.3117836597, 
+            "TotalN": 132634.95762592004, 
+            "TotalP": 9927.438258566128, 
+            "Sediment": 3407819.7166651506, 
             "Unit": "kg"
         }, 
         {
             "Source": "Loading Rates", 
-            "TotalN": 0.6716930177107028, 
-            "TotalP": 0.050274702894975404, 
-            "Sediment": 17.257941286192363, 
+            "TotalN": 0.6716945619534173, 
+            "TotalP": 0.05027487784339627, 
+            "Sediment": 17.257999043189567, 
             "Unit": "kg/ha"
         }, 
         {
             "Source": "Mean Annual Concentration", 
-            "TotalN": 0.20627578456968665, 
-            "TotalP": 0.01543927584510859, 
-            "Sediment": 5.299884448702366, 
+            "TotalN": 0.20627625880400074, 
+            "TotalP": 0.015439329571471413, 
+            "Sediment": 5.299902185778083, 
             "Unit": "mg/l"
         }, 
         {
@@ -202,9 +202,9 @@
         }, 
         {
             "Source": "Low-Density Mixed", 
-            "TotalN": 176.86004262239555, 
-            "TotalP": 20.03660751162056, 
-            "Sediment": 6614.831264641733
+            "TotalN": 177.1649737303652, 
+            "TotalP": 20.0711533866406, 
+            "Sediment": 6626.2361461324945
         }, 
         {
             "Source": "Medium-Density Mixed", 
diff --git a/test/integrationtests/huc12__60099.json b/test/integrationtests/huc12__60099.json
index d7ae6300..72e9854b 100644
--- a/test/integrationtests/huc12__60099.json
+++ b/test/integrationtests/huc12__60099.json
@@ -1,1 +1,1 @@
-{"MeanFlow": 3276269.9577904535, "monthly": [{"AvEvapoTrans": 0.8126605694961087, "AvTileDrain": 0.0, "AvPrecipitation": 1.25857, "AvRunoff": 0.13689747252275233, "AvGroundWater": 3.099999999999997e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.13689747252275233}, {"AvEvapoTrans": 1.3248742430204457, "AvTileDrain": 0.0, "AvPrecipitation": 1.56464, "AvRunoff": 0.12613616203608355, "AvGroundWater": 2.8233333333333314e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.12613616203608355}, {"AvEvapoTrans": 2.6703796174166783, "AvTileDrain": 0.0, "AvPrecipitation": 3.198706666666666, "AvRunoff": 0.22966955732392627, "AvGroundWater": 3.099999999999997e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.22966955732392627}, {"AvEvapoTrans": 4.793573174653375, "AvTileDrain": 0.0, "AvPrecipitation": 3.854873333333333, "AvRunoff": 0.05645643666284343, "AvGroundWater": 2.999999999999999e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.05645643666284343}, {"AvEvapoTrans": 7.461969404717604, "AvTileDrain": 0.0, "AvPrecipitation": 7.001086666666667, "AvRunoff": 0.15356720774178922, "AvGroundWater": 3.099999999999997e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.15356720774178922}, {"AvEvapoTrans": 8.738253405568, "AvTileDrain": 0.0, "AvPrecipitation": 8.63092, "AvRunoff": 0.3386682895264326, "AvGroundWater": 2.999999999999999e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.3386682895264326}, {"AvEvapoTrans": 7.126457130414907, "AvTileDrain": 0.0, "AvPrecipitation": 7.446433333333333, "AvRunoff": 0.20323506087718798, "AvGroundWater": 3.099999999999997e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.20323506087718798}, {"AvEvapoTrans": 7.175596135277575, "AvTileDrain": 0.0, "AvPrecipitation": 7.554383333333333, "AvRunoff": 0.3125190678503529, "AvGroundWater": 3.099999999999997e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.3125190678503529}, {"AvEvapoTrans": 4.8991553099867255, "AvTileDrain": 0.0, "AvPrecipitation": 4.953, "AvRunoff": 0.057667609271010126, "AvGroundWater": 2.999999999999999e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.057667609271010126}, {"AvEvapoTrans": 2.900014775515559, "AvTileDrain": 0.0, "AvPrecipitation": 3.3544933333333335, "AvRunoff": 0.17967543389659232, "AvGroundWater": 3.099999999999997e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.17967543389659232}, {"AvEvapoTrans": 1.5670579303851646, "AvTileDrain": 0.0, "AvPrecipitation": 1.92151, "AvRunoff": 0.10280473211636647, "AvGroundWater": 2.999999999999999e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.10280473211636647}, {"AvEvapoTrans": 0.9984561668704222, "AvTileDrain": 0.0, "AvPrecipitation": 1.3775266666666666, "AvRunoff": 0.06704668868417081, "AvGroundWater": 3.099999999999997e-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.06704668868417081}], "meta": {"NRur": 10, "SedDelivRatio": 0.09808023767030769, "NLU": 16, "NUrb": 6, "WxYrBeg": 1961, "NYrs": 30, "WxYrEnd": 1990}, "MeanFlowPerSecond": 0.10388983884419246, "AreaTotal": 16678.7, "SummaryLoads": [{"Source": "Total Loads", "TotalN": 10370.307585716917, "TotalP": 1605.3007334774936, "Sediment": 746312.4254000628, "Unit": "kg"}, {"Source": "Loading Rates", "TotalN": 0.6217695375369133, "TotalP": 0.09624855255370583, "Sediment": 44.746438595337935, "Unit": "kg/ha"}, {"Source": "Mean Annual Concentration", "TotalN": 3.1652787222426406, "TotalP": 0.4899781624100729, "Sediment": 227.7933244253727, "Unit": "mg/l"}, {"Source": "Mean Low-Flow Concentration", "TotalN": 3.2078709712858147, "TotalP": 0.5341967615341932, "Sediment": 133.14439618576807, "Unit": "mg/l"}], "Loads": [{"Source": "Hay/Pasture", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0.0}, {"Source": "Cropland", "TotalN": 8664.11369027995, "TotalP": 1196.214327202474, "Sediment": 710022.2316944649}, {"Source": "Wooded Areas", "TotalN": 21.90220586770304, "TotalP": 1.7409821998100221, "Sediment": 1005.9745337191623}, {"Source": "Wetlands", "TotalN": 11.374144726781527, "TotalP": 0.6297439168995842, "Sediment": 53.19401659705995}, {"Source": "Open Land", "TotalN": 530.3855158310597, "TotalP": 33.50214020648894, "Sediment": 32988.68588198341}, {"Source": "Barren Areas", "TotalN": 0.05254799555787975, "TotalP": 0.0018360620714251734, "Sediment": 0.13006962893286378}, {"Source": "Low-Density Mixed", "TotalN": 65.64909600668825, "TotalP": 7.035818443735457, "Sediment": 2215.813718517576}, {"Source": "Medium-Density Mixed", "TotalN": 0.09163039054640279, "TotalP": 0.009268537751675864, "Sediment": 5.395485151734889}, {"Source": "High-Density Mixed", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0.0}, {"Source": "Low-Density Open Space", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0.0}, {"Source": "Farm Animals", "TotalN": 1076.7387546186287, "TotalP": 366.1666169082625, "Sediment": 0}, {"Source": "Stream Bank Erosion", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 21.0}, {"Source": "Subsurface Flow", "TotalN": 9.026850577919142e-15, "TotalP": 1.355988414665646e-16, "Sediment": 0}, {"Source": "Point Sources", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0}, {"Source": "Septic Systems", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0}]}
\ No newline at end of file
+{"MeanFlow": 3276269.9577904535, "monthly": [{"AvEvapoTrans": 0.8126605694961087, "AvTileDrain": 0.0, "AvPrecipitation": 1.25857, "AvRunoff": 0.13689747252275233, "AvGroundWater": 3.099999999999997E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.13689747252275233}, {"AvEvapoTrans": 1.3248742430204457, "AvTileDrain": 0.0, "AvPrecipitation": 1.56464, "AvRunoff": 0.12613616203608355, "AvGroundWater": 2.8233333333333314E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.12613616203608355}, {"AvEvapoTrans": 2.6703796174166783, "AvTileDrain": 0.0, "AvPrecipitation": 3.198706666666666, "AvRunoff": 0.22966955732392627, "AvGroundWater": 3.099999999999997E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.22966955732392627}, {"AvEvapoTrans": 4.793573174653375, "AvTileDrain": 0.0, "AvPrecipitation": 3.854873333333333, "AvRunoff": 0.05645643666284343, "AvGroundWater": 2.999999999999999E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.05645643666284343}, {"AvEvapoTrans": 7.461969404717604, "AvTileDrain": 0.0, "AvPrecipitation": 7.001086666666667, "AvRunoff": 0.15356720774178922, "AvGroundWater": 3.099999999999997E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.15356720774178922}, {"AvEvapoTrans": 8.738253405568, "AvTileDrain": 0.0, "AvPrecipitation": 8.63092, "AvRunoff": 0.3386682895264326, "AvGroundWater": 2.999999999999999E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.3386682895264326}, {"AvEvapoTrans": 7.126457130414907, "AvTileDrain": 0.0, "AvPrecipitation": 7.446433333333333, "AvRunoff": 0.20323506087718798, "AvGroundWater": 3.099999999999997E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.20323506087718798}, {"AvEvapoTrans": 7.175596135277575, "AvTileDrain": 0.0, "AvPrecipitation": 7.554383333333333, "AvRunoff": 0.3125190678503529, "AvGroundWater": 3.099999999999997E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.3125190678503529}, {"AvEvapoTrans": 4.8991553099867255, "AvTileDrain": 0.0, "AvPrecipitation": 4.953, "AvRunoff": 0.057667609271010126, "AvGroundWater": 2.999999999999999E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.057667609271010126}, {"AvEvapoTrans": 2.900014775515559, "AvTileDrain": 0.0, "AvPrecipitation": 3.3544933333333335, "AvRunoff": 0.17967543389659232, "AvGroundWater": 3.099999999999997E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.17967543389659232}, {"AvEvapoTrans": 1.5670579303851646, "AvTileDrain": 0.0, "AvPrecipitation": 1.92151, "AvRunoff": 0.10280473211636647, "AvGroundWater": 2.999999999999999E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.10280473211636647}, {"AvEvapoTrans": 0.9984561668704222, "AvTileDrain": 0.0, "AvPrecipitation": 1.3775266666666666, "AvRunoff": 0.06704668868417081, "AvGroundWater": 3.099999999999997E-19, "AvPtSrcFlow": 0.0, "AvWithdrawal": 0.0, "AvStreamFlow": 0.06704668868417081}], "meta": {"NRur": 10, "SedDelivRatio": 0.09808023767030769, "NLU": 16, "NUrb": 6, "WxYrBeg": 1961, "NYrs": 30, "WxYrEnd": 1990}, "MeanFlowPerSecond": 0.10388983884419246, "AreaTotal": 16678.7, "SummaryLoads": [{"Source": "Total Loads", "TotalN": 10370.395117844924, "TotalP": 1605.310114568752, "Sediment": 746315.3798183539, "Unit": "kg"}, {"Source": "Loading Rates", "TotalN": 0.6217747856754378, "TotalP": 0.09624911501308567, "Sediment": 44.74661573254234, "Unit": "kg/ha"}, {"Source": "Mean Annual Concentration", "TotalN": 3.1653054392498277, "TotalP": 0.48998102575509006, "Sediment": 227.79422618814837, "Unit": "mg/l"}, {"Source": "Mean Low-Flow Concentration", "TotalN": 3.2078709712858147, "TotalP": 0.5341967615341932, "Sediment": 133.14439618576807, "Unit": "mg/l"}], "Loads": [{"Source": "Hay/Pasture", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0.0}, {"Source": "Cropland", "TotalN": 8664.11369027995, "TotalP": 1196.214327202474, "Sediment": 710022.2316944649}, {"Source": "Wooded Areas", "TotalN": 21.90220586770304, "TotalP": 1.7409821998100221, "Sediment": 1005.9745337191623}, {"Source": "Wetlands", "TotalN": 11.374144726781527, "TotalP": 0.6297439168995842, "Sediment": 53.19401659705995}, {"Source": "Open Land", "TotalN": 530.3855158310597, "TotalP": 33.50214020648894, "Sediment": 32988.68588198341}, {"Source": "Barren Areas", "TotalN": 0.05254799555787975, "TotalP": 0.0018360620714251734, "Sediment": 0.13006962893286378}, {"Source": "Low-Density Mixed", "TotalN": 65.73662813469717, "TotalP": 7.045199534993771, "Sediment": 2218.7681368089325}, {"Source": "Medium-Density Mixed", "TotalN": 0.09163039054640279, "TotalP": 0.009268537751675864, "Sediment": 5.395485151734889}, {"Source": "High-Density Mixed", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0.0}, {"Source": "Low-Density Open Space", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0.0}, {"Source": "Farm Animals", "TotalN": 1076.7387546186287, "TotalP": 366.1666169082625, "Sediment": 0}, {"Source": "Stream Bank Erosion", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 21.0}, {"Source": "Subsurface Flow", "TotalN": 9.026850577919142E-15, "TotalP": 1.355988414665646E-16, "Sediment": 0}, {"Source": "Point Sources", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0}, {"Source": "Septic Systems", "TotalN": 0.0, "TotalP": 0.0, "Sediment": 0}]}
\ No newline at end of file
diff --git a/test/integrationtests/test10_output.json b/test/integrationtests/test10_output.json
index 498d5221..4f1ac94f 100644
--- a/test/integrationtests/test10_output.json
+++ b/test/integrationtests/test10_output.json
@@ -136,23 +136,23 @@
     "SummaryLoads": [
         {
             "Source": "Total Loads", 
-            "TotalN": 42988.83610730503, 
-            "TotalP": 7228.733738794659, 
-            "Sediment": 2139094.518597691, 
+            "TotalN": 42989.14000300461, 
+            "TotalP": 7228.767317398559, 
+            "Sediment": 2139105.377754345, 
             "Unit": "kg"
         }, 
         {
             "Source": "Loading Rates", 
-            "TotalN": 3.2961337893380747, 
-            "TotalP": 0.5542572371835012, 
-            "Sediment": 164.01331973115663, 
+            "TotalN": 3.296157090291869, 
+            "TotalP": 0.5542598117954455, 
+            "Sediment": 164.0141523480966, 
             "Unit": "kg/ha"
         }, 
         {
             "Source": "Mean Annual Concentration", 
-            "TotalN": 1.5728049686090977, 
-            "TotalP": 0.2644730439491121, 
-            "Sediment": 78.26167888744563, 
+            "TotalN": 1.5728160870461043, 
+            "TotalP": 0.26447427246795174, 
+            "Sediment": 78.2620761844438, 
             "Unit": "mg/l"
         }, 
         {
@@ -202,9 +202,9 @@
         }, 
         {
             "Source": "Low-Density Mixed", 
-            "TotalN": 228.52956608751623, 
-            "TotalP": 25.251110132417246, 
-            "Sediment": 8166.085804064185
+            "TotalN": 228.83346178710073, 
+            "TotalP": 25.284688736316745, 
+            "Sediment": 8176.944960718524
         }, 
         {
             "Source": "Medium-Density Mixed", 
diff --git a/test/integrationtests/test1_output.json b/test/integrationtests/test1_output.json
index 3b8a18bf..ab1768ef 100644
--- a/test/integrationtests/test1_output.json
+++ b/test/integrationtests/test1_output.json
@@ -136,23 +136,23 @@
     "SummaryLoads": [
         {
             "Source": "Total Loads", 
-            "TotalN": 62554.89087311879, 
-            "TotalP": 9008.384515683565, 
-            "Sediment": 4631054.160525507, 
+            "TotalN": 62555.20164434627, 
+            "TotalP": 9008.418935088383, 
+            "Sediment": 4631065.313740464, 
             "Unit": "kg"
         }, 
         {
             "Source": "Loading Rates", 
-            "TotalN": 6.142226431907505, 
-            "TotalP": 0.88452775967986, 
-            "Sediment": 454.7203723857574, 
+            "TotalN": 6.142256946344043, 
+            "TotalP": 0.8845311393001436, 
+            "Sediment": 454.72146751310476, 
             "Unit": "kg/ha"
         }, 
         {
             "Source": "Mean Annual Concentration", 
-            "TotalN": 1.3786275608457275, 
-            "TotalP": 0.19853295239867583, 
-            "Sediment": 102.06234576317192, 
+            "TotalN": 1.3786344098350443, 
+            "TotalP": 0.1985337109571106, 
+            "Sediment": 102.06259156536765, 
             "Unit": "mg/l"
         }, 
         {
@@ -202,9 +202,9 @@
         }, 
         {
             "Source": "Low-Density Mixed", 
-            "TotalN": 234.94304797610081, 
-            "TotalP": 26.02107004146233, 
-            "Sediment": 8431.830506856597
+            "TotalN": 235.25381920358242, 
+            "TotalP": 26.05548944627908, 
+            "Sediment": 8442.983721812758
         }, 
         {
             "Source": "Medium-Density Mixed", 
diff --git a/test/integrationtests/test_output.py b/test/integrationtests/test_output.py
index 2a8fad49..e5e2c4b5 100644
--- a/test/integrationtests/test_output.py
+++ b/test/integrationtests/test_output.py
@@ -23,12 +23,15 @@ class TestOutput(unittest.TestCase):
     @classmethod
     def setUpClass(self, input_file_name, output_file_name):
         self.basepath = os.path.abspath(os.path.join(__file__, '../'))
+        
         inputfile = os.path.join(self.basepath,input_file_name)
+        with open(inputfile, 'r') as input_file:
+            self.z = Parser.GmsReader(input_file).read()
+            self.generated_output, _ = gwlfe.run(self.z)    
+        
         outputfile = os.path.join(self.basepath,output_file_name)
-        input_file = open(inputfile, 'r')
-        self.z = Parser.GmsReader(input_file).read()
-        self.generated_output, _ = gwlfe.run(self.z)
-        self.static_output = json.load(open(outputfile, 'r'))
+        with open(outputfile, 'r') as output_file:
+            self.static_output = json.load(output_file)    
 
     def test_constants(self):
         constant_keys = ["MeanFlow", "MeanFlowPerSecond", "AreaTotal"]
@@ -49,8 +52,8 @@ def test_check_monthly(self):
         self.assertEqual(len(self.generated_output["monthly"]), len(self.static_output["monthly"]))
         error = False
         for i, month in enumerate(self.generated_output["monthly"]):
-            self.assertItemsEqual(self.generated_output["monthly"][i], self.static_output["monthly"][i])
-            for (key, val) in month.iteritems():
+            self.assertCountEqual(self.generated_output["monthly"][i], self.static_output["monthly"][i])
+            for (key, val) in month.items():
                 try:
                     np.testing.assert_allclose(self.generated_output["monthly"][i][key],
                                                self.static_output["monthly"][i][key],
@@ -82,8 +85,8 @@ def test_summary_loads(self):
         self.assertEqual(len(self.generated_output["SummaryLoads"]), len(self.static_output["SummaryLoads"]))
         error = False
         for i, month in enumerate(self.generated_output["SummaryLoads"]):
-            self.assertItemsEqual(self.generated_output["SummaryLoads"][i], self.static_output["SummaryLoads"][i])
-            for (key, val) in month.iteritems():
+            self.assertCountEqual(self.generated_output["SummaryLoads"][i], self.static_output["SummaryLoads"][i])
+            for (key, val) in month.items():
                 try:
                     try:
                         np.testing.assert_allclose(self.generated_output["SummaryLoads"][i][key],
@@ -104,8 +107,8 @@ def test_loads(self):
         self.assertEqual(len(self.generated_output["Loads"]), len(self.static_output["Loads"]))
         error = False
         for i, month in enumerate(self.generated_output["Loads"]):
-            self.assertItemsEqual(self.generated_output["Loads"][i], self.static_output["Loads"][i])
-            for (key, val) in month.iteritems():
+            self.assertCountEqual(self.generated_output["Loads"][i], self.static_output["Loads"][i])
+            for (key, val) in month.items():
                 try:
                     try:
                         np.testing.assert_allclose(self.generated_output["Loads"][i][key],
diff --git a/test/integrationtests/test_output_gms1.py b/test/integrationtests/test_output_gms1.py
index 98c54dec..429ff8c1 100644
--- a/test/integrationtests/test_output_gms1.py
+++ b/test/integrationtests/test_output_gms1.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms1_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms10.py b/test/integrationtests/test_output_gms10.py
index 4e0245f5..f4227bce 100644
--- a/test/integrationtests/test_output_gms10.py
+++ b/test/integrationtests/test_output_gms10.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms10_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms2.py b/test/integrationtests/test_output_gms2.py
index 58006175..0a5f6410 100644
--- a/test/integrationtests/test_output_gms2.py
+++ b/test/integrationtests/test_output_gms2.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms2_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms3.py b/test/integrationtests/test_output_gms3.py
index b10773f5..14669000 100644
--- a/test/integrationtests/test_output_gms3.py
+++ b/test/integrationtests/test_output_gms3.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms3_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms4.py b/test/integrationtests/test_output_gms4.py
index aad468a8..ee51a7ba 100644
--- a/test/integrationtests/test_output_gms4.py
+++ b/test/integrationtests/test_output_gms4.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms4_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms5.py b/test/integrationtests/test_output_gms5.py
index 1997f3af..f855206b 100644
--- a/test/integrationtests/test_output_gms5.py
+++ b/test/integrationtests/test_output_gms5.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms5_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms6.py b/test/integrationtests/test_output_gms6.py
index 47d60f64..e0f02b0d 100644
--- a/test/integrationtests/test_output_gms6.py
+++ b/test/integrationtests/test_output_gms6.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms6_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms7.py b/test/integrationtests/test_output_gms7.py
index 9122e1d9..db039b00 100644
--- a/test/integrationtests/test_output_gms7.py
+++ b/test/integrationtests/test_output_gms7.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms7_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms8.py b/test/integrationtests/test_output_gms8.py
index d156f47c..46a88607 100644
--- a/test/integrationtests/test_output_gms8.py
+++ b/test/integrationtests/test_output_gms8.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms8_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_gms9.py b/test/integrationtests/test_output_gms9.py
index 2fd969d8..d87dc936 100644
--- a/test/integrationtests/test_output_gms9.py
+++ b/test/integrationtests/test_output_gms9.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class gms9_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_input4.py b/test/integrationtests/test_output_input4.py
index 7a36eb54..b7cd1deb 100644
--- a/test/integrationtests/test_output_input4.py
+++ b/test/integrationtests/test_output_input4.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 # from mock import patch
diff --git a/test/integrationtests/test_output_nurbbank_zero.py b/test/integrationtests/test_output_nurbbank_zero.py
index 0f05cb03..44e22663 100644
--- a/test/integrationtests/test_output_nurbbank_zero.py
+++ b/test/integrationtests/test_output_nurbbank_zero.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class nurbbank_zero_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_red.py b/test/integrationtests/test_output_red.py
index 9e2623a6..f479be6d 100644
--- a/test/integrationtests/test_output_red.py
+++ b/test/integrationtests/test_output_red.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class elm_fork_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test1.py b/test/integrationtests/test_output_test1.py
index 25d8f5fc..7b670048 100644
--- a/test/integrationtests/test_output_test1.py
+++ b/test/integrationtests/test_output_test1.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test1_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test10.py b/test/integrationtests/test_output_test10.py
index f19c37d0..d2acebac 100644
--- a/test/integrationtests/test_output_test10.py
+++ b/test/integrationtests/test_output_test10.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test10_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test2.py b/test/integrationtests/test_output_test2.py
index 9eca985b..4400193b 100644
--- a/test/integrationtests/test_output_test2.py
+++ b/test/integrationtests/test_output_test2.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test2_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test3.py b/test/integrationtests/test_output_test3.py
index 92d7684c..4d49ec6d 100644
--- a/test/integrationtests/test_output_test3.py
+++ b/test/integrationtests/test_output_test3.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test3_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test4.py b/test/integrationtests/test_output_test4.py
index caea87da..35a895ad 100644
--- a/test/integrationtests/test_output_test4.py
+++ b/test/integrationtests/test_output_test4.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test4_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test5.py b/test/integrationtests/test_output_test5.py
index 1970ea0f..7747e69b 100644
--- a/test/integrationtests/test_output_test5.py
+++ b/test/integrationtests/test_output_test5.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test5_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test6.py b/test/integrationtests/test_output_test6.py
index 51d3b836..6b43a265 100644
--- a/test/integrationtests/test_output_test6.py
+++ b/test/integrationtests/test_output_test6.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test6_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test7.py b/test/integrationtests/test_output_test7.py
index bccea969..f97ad528 100644
--- a/test/integrationtests/test_output_test7.py
+++ b/test/integrationtests/test_output_test7.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test7_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test8.py b/test/integrationtests/test_output_test8.py
index 7cd4e1b3..bf310c7a 100644
--- a/test/integrationtests/test_output_test8.py
+++ b/test/integrationtests/test_output_test8.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test8_TestOutput(TestOutput):
diff --git a/test/integrationtests/test_output_test9.py b/test/integrationtests/test_output_test9.py
index 3b84de98..51ca9ce7 100644
--- a/test/integrationtests/test_output_test9.py
+++ b/test/integrationtests/test_output_test9.py
@@ -3,7 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from test_output import TestOutput
+from .test_output import TestOutput
 
 
 class test9_TestOutput(TestOutput):
diff --git a/test/unittests/VariableUnittest.py b/test/unittests/VariableUnitTest.py
similarity index 70%
rename from test/unittests/VariableUnittest.py
rename to test/unittests/VariableUnitTest.py
index 8238760f..8e87d826 100644
--- a/test/unittests/VariableUnittest.py
+++ b/test/unittests/VariableUnitTest.py
@@ -8,5 +8,5 @@ class VariableUnitTest(unittest.TestCase):
     def setUp(self):
         self.basepath = os.path.abspath(os.path.join(__file__, '../'))
         testgms = os.path.join(self.basepath, 'input_4.gms')
-        input_file = open(testgms, 'r')
-        self.z = Parser.GmsReader(input_file).read()
+        with open(testgms, 'r') as input_file:
+            self.z = Parser.GmsReader(input_file).read()
diff --git a/test/unittests/test_AEU.py b/test/unittests/test_AEU.py
index 7a6acdb2..5276ad81 100644
--- a/test/unittests/test_AEU.py
+++ b/test/unittests/test_AEU.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.Animals import AEU
 
 
diff --git a/test/unittests/test_AGSTRM.py b/test/unittests/test_AGSTRM.py
index 0db51148..c76bd592 100644
--- a/test/unittests/test_AGSTRM.py
+++ b/test/unittests/test_AGSTRM.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Ag import AGSTRM
 
 
diff --git a/test/unittests/test_AMC5.py b/test/unittests/test_AMC5.py
index 7cfa8d68..7e76034a 100644
--- a/test/unittests/test_AMC5.py
+++ b/test/unittests/test_AMC5.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe import DailyArrayConverter
 from gwlfe.Input.WaterBudget import AMC5
 
diff --git a/test/unittests/test_AdjQTotal.py b/test/unittests/test_AdjQTotal.py
index 7340fc00..5d485a50 100644
--- a/test/unittests/test_AdjQTotal.py
+++ b/test/unittests/test_AdjQTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import AdjQTotal
 
 
diff --git a/test/unittests/test_AdjUrbanQTotal.py b/test/unittests/test_AdjUrbanQTotal.py
index ca2599c4..1a7c3be3 100644
--- a/test/unittests/test_AdjUrbanQTotal.py
+++ b/test/unittests/test_AdjUrbanQTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import AdjUrbanQTotal
 
 
diff --git a/test/unittests/test_AdjUrbanQTotal_1.py b/test/unittests/test_AdjUrbanQTotal_1.py
index 0ab749a6..1d263b24 100644
--- a/test/unittests/test_AdjUrbanQTotal_1.py
+++ b/test/unittests/test_AdjUrbanQTotal_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import AdjUrbanQTotal_1
 
 
diff --git a/test/unittests/test_AgAreaTotal.py b/test/unittests/test_AgAreaTotal.py
index b348830a..38988bc3 100644
--- a/test/unittests/test_AgAreaTotal.py
+++ b/test/unittests/test_AgAreaTotal.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestAgAreaTotal(VariableUnitTest):
diff --git a/test/unittests/test_AgQTotal.py b/test/unittests/test_AgQTotal.py
index 9555ebfb..075deef1 100644
--- a/test/unittests/test_AgQTotal.py
+++ b/test/unittests/test_AgQTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import AgQTotal
 
 
diff --git a/test/unittests/test_AgRunoff.py b/test/unittests/test_AgRunoff.py
index 571e5e1c..0a061597 100644
--- a/test/unittests/test_AgRunoff.py
+++ b/test/unittests/test_AgRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import AgRunoff
 
 
diff --git a/test/unittests/test_AnimalN.py b/test/unittests/test_AnimalN.py
index 8976d16e..347b78c0 100644
--- a/test/unittests/test_AnimalN.py
+++ b/test/unittests/test_AnimalN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.AvAnimalNSum import AnimalN
 
 
diff --git a/test/unittests/test_AntMoist.py b/test/unittests/test_AntMoist.py
index e70bc06d..6e44c360 100644
--- a/test/unittests/test_AntMoist.py
+++ b/test/unittests/test_AntMoist.py
@@ -5,7 +5,7 @@
 
 from gwlfe import Parser
 from gwlfe.Input.WaterBudget import AntMoist
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 class TestAntMoist(VariableUnitTest):
     @skip("not ready")
diff --git a/test/unittests/test_AreaTotal.py b/test/unittests/test_AreaTotal.py
index d5cf8a32..1ae8aad8 100644
--- a/test/unittests/test_AreaTotal.py
+++ b/test/unittests/test_AreaTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse import AreaTotal
 
 
diff --git a/test/unittests/test_AttenN.py b/test/unittests/test_AttenN.py
index ea357894..38309b2c 100644
--- a/test/unittests/test_AttenN.py
+++ b/test/unittests/test_AttenN.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestAttenN(VariableUnitTest):
diff --git a/test/unittests/test_AvAnimalN.py b/test/unittests/test_AvAnimalN.py
index 766844ad..055b76be 100644
--- a/test/unittests/test_AvAnimalN.py
+++ b/test/unittests/test_AvAnimalN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.AvAnimalNSum import AvAnimalN
 
 
diff --git a/test/unittests/test_AvAnimalNSum.py b/test/unittests/test_AvAnimalNSum.py
index 9eefbb7a..9cfafde4 100644
--- a/test/unittests/test_AvAnimalNSum.py
+++ b/test/unittests/test_AvAnimalNSum.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.AvAnimalNSum import AvAnimalNSum
 
 
diff --git a/test/unittests/test_AvAnimalNSum_1.py b/test/unittests/test_AvAnimalNSum_1.py
index e7fee8fc..8d085a20 100644
--- a/test/unittests/test_AvAnimalNSum_1.py
+++ b/test/unittests/test_AvAnimalNSum_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.AvAnimalNSum import AvAnimalNSum_1
 
 
diff --git a/test/unittests/test_AvCN.py b/test/unittests/test_AvCN.py
index 66768b08..7028f8cb 100644
--- a/test/unittests/test_AvCN.py
+++ b/test/unittests/test_AvCN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import AvCN
 
 
diff --git a/test/unittests/test_AvCNRur.py b/test/unittests/test_AvCNRur.py
index 4d704bda..66004afd 100644
--- a/test/unittests/test_AvCNRur.py
+++ b/test/unittests/test_AvCNRur.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import AvCNRur
 
 
diff --git a/test/unittests/test_AvCNUrb.py b/test/unittests/test_AvCNUrb.py
index a4412c4a..cf4b14bf 100644
--- a/test/unittests/test_AvCNUrb.py
+++ b/test/unittests/test_AvCNUrb.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import AvCNUrb
 
 
diff --git a/test/unittests/test_AvErosion.py b/test/unittests/test_AvErosion.py
index 707e7590..0867152f 100644
--- a/test/unittests/test_AvErosion.py
+++ b/test/unittests/test_AvErosion.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import AvErosion
 
 
diff --git a/test/unittests/test_AvEvapoTrans.py b/test/unittests/test_AvEvapoTrans.py
index a183b0b0..fe782f86 100644
--- a/test/unittests/test_AvEvapoTrans.py
+++ b/test/unittests/test_AvEvapoTrans.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import AvEvapoTrans
 
 
diff --git a/test/unittests/test_AvGRLostBarnN.py b/test/unittests/test_AvGRLostBarnN.py
index feaafe67..a58b9e59 100644
--- a/test/unittests/test_AvGRLostBarnN.py
+++ b/test/unittests/test_AvGRLostBarnN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses import AvGRLostBarnN
 
 
diff --git a/test/unittests/test_AvGRLostBarnNSum.py b/test/unittests/test_AvGRLostBarnNSum.py
index c877576f..b9a51fa9 100644
--- a/test/unittests/test_AvGRLostBarnNSum.py
+++ b/test/unittests/test_AvGRLostBarnNSum.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses import AvGRLostBarnNSum
 
 
diff --git a/test/unittests/test_AvGroundWater.py b/test/unittests/test_AvGroundWater.py
index 4fee7ee4..ca2b4db2 100644
--- a/test/unittests/test_AvGroundWater.py
+++ b/test/unittests/test_AvGroundWater.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import AvGroundWater
 
 
diff --git a/test/unittests/test_AvRunoff.py b/test/unittests/test_AvRunoff.py
index 8d7a1db4..12001b80 100644
--- a/test/unittests/test_AvRunoff.py
+++ b/test/unittests/test_AvRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import AvRunoff
 
 
diff --git a/test/unittests/test_AvSedYield.py b/test/unittests/test_AvSedYield.py
index a88fbdce..2141fe0a 100644
--- a/test/unittests/test_AvSedYield.py
+++ b/test/unittests/test_AvSedYield.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import AvSedYield
 
 
diff --git a/test/unittests/test_AvStreamBankEros.py b/test/unittests/test_AvStreamBankEros.py
index 732c7627..8496ab5a 100644
--- a/test/unittests/test_AvStreamBankEros.py
+++ b/test/unittests/test_AvStreamBankEros.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import AvStreamBankEros
 
 
diff --git a/test/unittests/test_AvStreamBankNSum.py b/test/unittests/test_AvStreamBankNSum.py
index 454de512..30b18cf7 100644
--- a/test/unittests/test_AvStreamBankNSum.py
+++ b/test/unittests/test_AvStreamBankNSum.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import AvStreamBankNSum
 
 
diff --git a/test/unittests/test_AvTileDrain.py b/test/unittests/test_AvTileDrain.py
index 48490ae6..0e7a66ab 100644
--- a/test/unittests/test_AvTileDrain.py
+++ b/test/unittests/test_AvTileDrain.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Ag import AvTileDrain
 
 
diff --git a/test/unittests/test_AvWithdrawal.py b/test/unittests/test_AvWithdrawal.py
index 1930f15e..eae865d8 100644
--- a/test/unittests/test_AvWithdrawal.py
+++ b/test/unittests/test_AvWithdrawal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import AvWithdrawal
 
 
diff --git a/test/unittests/test_BSed.py b/test/unittests/test_BSed.py
index 90e1ae58..959303bb 100644
--- a/test/unittests/test_BSed.py
+++ b/test/unittests/test_BSed.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import BSed
 
 
diff --git a/test/unittests/test_CNI.py b/test/unittests/test_CNI.py
index 8bcd21df..5f544677 100644
--- a/test/unittests/test_CNI.py
+++ b/test/unittests/test_CNI.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import CNI
 
 
diff --git a/test/unittests/test_CNP.py b/test/unittests/test_CNP.py
index 718cb923..c9b6eab0 100644
--- a/test/unittests/test_CNP.py
+++ b/test/unittests/test_CNP.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import CNP
 
 
diff --git a/test/unittests/test_CNum.py b/test/unittests/test_CNum.py
index 04c11207..7f81b2a4 100644
--- a/test/unittests/test_CNum.py
+++ b/test/unittests/test_CNum.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import CNum
 
 
diff --git a/test/unittests/test_CNumImperv.py b/test/unittests/test_CNumImperv.py
index df24c22e..a5860de0 100644
--- a/test/unittests/test_CNumImperv.py
+++ b/test/unittests/test_CNumImperv.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import CNumImperv
 
 
diff --git a/test/unittests/test_CNumImpervReten.py b/test/unittests/test_CNumImpervReten.py
index 2b30877c..32aaca6e 100644
--- a/test/unittests/test_CNumImpervReten.py
+++ b/test/unittests/test_CNumImpervReten.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import CNumImpervReten
 
 
diff --git a/test/unittests/test_CNumPerv.py b/test/unittests/test_CNumPerv.py
index 74346e1e..5bb81144 100644
--- a/test/unittests/test_CNumPerv.py
+++ b/test/unittests/test_CNumPerv.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import CNumPerv
 
 
diff --git a/test/unittests/test_CNumPervReten.py b/test/unittests/test_CNumPervReten.py
index 9fb9513e..68a4a0aa 100644
--- a/test/unittests/test_CNumPervReten.py
+++ b/test/unittests/test_CNumPervReten.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import CNumPervReten
 
 
diff --git a/test/unittests/test_DailyFlow.py b/test/unittests/test_DailyFlow.py
index b5223dec..0b4ec9f6 100644
--- a/test/unittests/test_DailyFlow.py
+++ b/test/unittests/test_DailyFlow.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import DailyFlow
 
 
diff --git a/test/unittests/test_DayRunoff.py b/test/unittests/test_DayRunoff.py
index ec613866..afbdadf6 100644
--- a/test/unittests/test_DayRunoff.py
+++ b/test/unittests/test_DayRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import DayRunoff
 
 
diff --git a/test/unittests/test_DeepSeep.py b/test/unittests/test_DeepSeep.py
index a0cdd0ca..d1b61c06 100644
--- a/test/unittests/test_DeepSeep.py
+++ b/test/unittests/test_DeepSeep.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestDeepSeep(VariableUnitTest):
diff --git a/test/unittests/test_DisLoad.py b/test/unittests/test_DisLoad.py
index 72b3f86e..1ba003ec 100644
--- a/test/unittests/test_DisLoad.py
+++ b/test/unittests/test_DisLoad.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import DisLoad
 
 
diff --git a/test/unittests/test_DisSurfLoad.py b/test/unittests/test_DisSurfLoad.py
index ce0675d6..0586edb0 100644
--- a/test/unittests/test_DisSurfLoad.py
+++ b/test/unittests/test_DisSurfLoad.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import DisSurfLoad
 
 
diff --git a/test/unittests/test_ET_1.py b/test/unittests/test_ET_1.py
index e270f66c..9a1f6369 100644
--- a/test/unittests/test_ET_1.py
+++ b/test/unittests/test_ET_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import ET_1
 
 
diff --git a/test/unittests/test_ErosSum.py b/test/unittests/test_ErosSum.py
index e493b9b0..b410eace 100644
--- a/test/unittests/test_ErosSum.py
+++ b/test/unittests/test_ErosSum.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import ErosSum
 
 
diff --git a/test/unittests/test_ErosWashoff.py b/test/unittests/test_ErosWashoff.py
index fc5b5d65..c0059de6 100644
--- a/test/unittests/test_ErosWashoff.py
+++ b/test/unittests/test_ErosWashoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import ErosWashoff
 
 
diff --git a/test/unittests/test_Erosion.py b/test/unittests/test_Erosion.py
index d5b469df..5efa39c8 100644
--- a/test/unittests/test_Erosion.py
+++ b/test/unittests/test_Erosion.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import Erosion
 
 
diff --git a/test/unittests/test_Erosion_1.py b/test/unittests/test_Erosion_1.py
index a4bd437f..e045763e 100644
--- a/test/unittests/test_Erosion_1.py
+++ b/test/unittests/test_Erosion_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import Erosion_1
 
 
diff --git a/test/unittests/test_Erosiv.py b/test/unittests/test_Erosiv.py
index 82f198ce..40949b1f 100644
--- a/test/unittests/test_Erosiv.py
+++ b/test/unittests/test_Erosiv.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import Erosiv
 
 
diff --git a/test/unittests/test_Evapotrans.py b/test/unittests/test_Evapotrans.py
index e21d22b9..824952f0 100644
--- a/test/unittests/test_Evapotrans.py
+++ b/test/unittests/test_Evapotrans.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Evapotrans
 
 
diff --git a/test/unittests/test_FilterEff.py b/test/unittests/test_FilterEff.py
index 4b0c14ca..ce62adaa 100644
--- a/test/unittests/test_FilterEff.py
+++ b/test/unittests/test_FilterEff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.Stream import FilterEff
 
 
diff --git a/test/unittests/test_Flow.py b/test/unittests/test_Flow.py
index 98e6b9b6..54faf0a0 100644
--- a/test/unittests/test_Flow.py
+++ b/test/unittests/test_Flow.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import Flow
 
 
diff --git a/test/unittests/test_FlowDays.py b/test/unittests/test_FlowDays.py
index e5a356de..a8129d1c 100644
--- a/test/unittests/test_FlowDays.py
+++ b/test/unittests/test_FlowDays.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestFlowDays(VariableUnitTest):
diff --git a/test/unittests/test_GRAccManAppN.py b/test/unittests/test_GRAccManAppN.py
index 1edcf3d3..babfd9bb 100644
--- a/test/unittests/test_GRAccManAppN.py
+++ b/test/unittests/test_GRAccManAppN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Loads import GRAccManAppN
 
 
diff --git a/test/unittests/test_GRAppManN.py b/test/unittests/test_GRAppManN.py
index 8bf14c72..0fa41216 100644
--- a/test/unittests/test_GRAppManN.py
+++ b/test/unittests/test_GRAppManN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Loads import GRAppManN
 
 
diff --git a/test/unittests/test_GRInitBarnN.py b/test/unittests/test_GRInitBarnN.py
index 5a314239..6cd152c6 100644
--- a/test/unittests/test_GRInitBarnN.py
+++ b/test/unittests/test_GRInitBarnN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Loads import GRInitBarnN
 
 
diff --git a/test/unittests/test_GRLBN.py b/test/unittests/test_GRLBN.py
index bb5bdebc..0169cd4e 100644
--- a/test/unittests/test_GRLBN.py
+++ b/test/unittests/test_GRLBN.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses import GRLBN
 
 
diff --git a/test/unittests/test_GRLBN_2.py b/test/unittests/test_GRLBN_2.py
index 638a86fa..e1a70a3d 100644
--- a/test/unittests/test_GRLBN_2.py
+++ b/test/unittests/test_GRLBN_2.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses import GRLBN_2
 
 
diff --git a/test/unittests/test_GRLoadN.py b/test/unittests/test_GRLoadN.py
index 6d6f9545..6477c8a0 100644
--- a/test/unittests/test_GRLoadN.py
+++ b/test/unittests/test_GRLoadN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Loads import GRLoadN
 from gwlfe.enums import YesOrNo
 
diff --git a/test/unittests/test_GRLossN.py b/test/unittests/test_GRLossN.py
index 8f7df9d7..ee2636dc 100644
--- a/test/unittests/test_GRLossN.py
+++ b/test/unittests/test_GRLossN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses import GRLossN
 
 
diff --git a/test/unittests/test_GRLostBarnN.py b/test/unittests/test_GRLostBarnN.py
index c5598367..3e90697e 100644
--- a/test/unittests/test_GRLostBarnN.py
+++ b/test/unittests/test_GRLostBarnN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses.GRLostBarnN import GRLostBarnN
 from gwlfe.AFOS.GrazingAnimals.Losses.GRLostBarnN import GRLostBarnN_f
 
diff --git a/test/unittests/test_GRLostBarnNSum.py b/test/unittests/test_GRLostBarnNSum.py
index 9097d2ee..8974bdeb 100644
--- a/test/unittests/test_GRLostBarnNSum.py
+++ b/test/unittests/test_GRLostBarnNSum.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestGRLostBarnNSum(VariableUnitTest):
diff --git a/test/unittests/test_GRLostManN.py b/test/unittests/test_GRLostManN.py
index 637bad2f..6b96ff67 100644
--- a/test/unittests/test_GRLostManN.py
+++ b/test/unittests/test_GRLostManN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses import GRLostManN
 
 
diff --git a/test/unittests/test_GRStreamN.py b/test/unittests/test_GRStreamN.py
index 0b8c8d81..68993f77 100644
--- a/test/unittests/test_GRStreamN.py
+++ b/test/unittests/test_GRStreamN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Losses import GRStreamN
 
 
diff --git a/test/unittests/test_GrFlow.py b/test/unittests/test_GrFlow.py
index 6c47c361..8e257f03 100644
--- a/test/unittests/test_GrFlow.py
+++ b/test/unittests/test_GrFlow.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import GrFlow
 
 
diff --git a/test/unittests/test_GrazingAnimal.py b/test/unittests/test_GrazingAnimal.py
index d09a6f93..7dd3d70b 100644
--- a/test/unittests/test_GrazingAnimal.py
+++ b/test/unittests/test_GrazingAnimal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.Animals import GrazingAnimal
 from gwlfe.enums import YesOrNo
 
diff --git a/test/unittests/test_GrazingN.py b/test/unittests/test_GrazingN.py
index 7aee3d06..26f30f97 100644
--- a/test/unittests/test_GrazingN.py
+++ b/test/unittests/test_GrazingN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Loads import GrazingN
 
 
diff --git a/test/unittests/test_GroundWatLE.py b/test/unittests/test_GroundWatLE.py
index 3a88dc9b..669bf494 100644
--- a/test/unittests/test_GroundWatLE.py
+++ b/test/unittests/test_GroundWatLE.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import GroundWatLE
 
 
diff --git a/test/unittests/test_GroundWatLE_1.py b/test/unittests/test_GroundWatLE_1.py
index 504418f9..f46dc884 100644
--- a/test/unittests/test_GroundWatLE_1.py
+++ b/test/unittests/test_GroundWatLE_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import GroundWatLE_1
 
 
diff --git a/test/unittests/test_Grow.py b/test/unittests/test_Grow.py
index 0082ad9e..07fac60a 100644
--- a/test/unittests/test_Grow.py
+++ b/test/unittests/test_Grow.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe import enums
 from gwlfe.Input.WaterBudget import Grow
 
diff --git a/test/unittests/test_GrowFactor.py b/test/unittests/test_GrowFactor.py
index 4f6d9c9d..0c77f906 100644
--- a/test/unittests/test_GrowFactor.py
+++ b/test/unittests/test_GrowFactor.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import GrowFactor
 
 
diff --git a/test/unittests/test_GwAgLE.py b/test/unittests/test_GwAgLE.py
index 673152e8..91c8b1ad 100644
--- a/test/unittests/test_GwAgLE.py
+++ b/test/unittests/test_GwAgLE.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Ag import GwAgLE
 
 
diff --git a/test/unittests/test_Infiltration.py b/test/unittests/test_Infiltration.py
index dba69e17..f1af5e1b 100644
--- a/test/unittests/test_Infiltration.py
+++ b/test/unittests/test_Infiltration.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Infiltration
 
 
diff --git a/test/unittests/test_InitGrN.py b/test/unittests/test_InitGrN.py
index 36a03292..1afe2c40 100644
--- a/test/unittests/test_InitGrN.py
+++ b/test/unittests/test_InitGrN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.GrazingAnimals.Loads import InitGrN
 
 
diff --git a/test/unittests/test_InitNgN.py b/test/unittests/test_InitNgN.py
index f3615ee8..89e1c125 100644
--- a/test/unittests/test_InitNgN.py
+++ b/test/unittests/test_InitNgN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Loads import InitNgN
 
 
diff --git a/test/unittests/test_InitSnow.py b/test/unittests/test_InitSnow.py
index a387ba97..19775c6a 100644
--- a/test/unittests/test_InitSnow.py
+++ b/test/unittests/test_InitSnow.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import InitSnow
 
 
diff --git a/test/unittests/test_LE.py b/test/unittests/test_LE.py
index e65034b7..1cd2acd3 100644
--- a/test/unittests/test_LE.py
+++ b/test/unittests/test_LE.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import LE
 
 
diff --git a/test/unittests/test_LU_1.py b/test/unittests/test_LU_1.py
index f5fc8800..bc3c7ce2 100644
--- a/test/unittests/test_LU_1.py
+++ b/test/unittests/test_LU_1.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestLU_1(VariableUnitTest):
diff --git a/test/unittests/test_Load.py b/test/unittests/test_Load.py
index a8bd1304..54d58578 100644
--- a/test/unittests/test_Load.py
+++ b/test/unittests/test_Load.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import Load
 
 
diff --git a/test/unittests/test_LossFactAdj.py b/test/unittests/test_LossFactAdj.py
index f5b0eaa0..bd7901ac 100644
--- a/test/unittests/test_LossFactAdj.py
+++ b/test/unittests/test_LossFactAdj.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns import LossFactAdj
 
 
diff --git a/test/unittests/test_LuDisLoad.py b/test/unittests/test_LuDisLoad.py
index 389d76e6..27d38bba 100644
--- a/test/unittests/test_LuDisLoad.py
+++ b/test/unittests/test_LuDisLoad.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import LuDisLoad
 
 
diff --git a/test/unittests/test_LuErosion.py b/test/unittests/test_LuErosion.py
index bd60c563..b53bdf66 100644
--- a/test/unittests/test_LuErosion.py
+++ b/test/unittests/test_LuErosion.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import LuErosion
 
 
diff --git a/test/unittests/test_LuLoad.py b/test/unittests/test_LuLoad.py
index cab8ffb6..e5bc7193 100644
--- a/test/unittests/test_LuLoad.py
+++ b/test/unittests/test_LuLoad.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import LuLoad
 
 
diff --git a/test/unittests/test_LuRunoff.py b/test/unittests/test_LuRunoff.py
index 38b65a41..8ce55f77 100644
--- a/test/unittests/test_LuRunoff.py
+++ b/test/unittests/test_LuRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import LuRunoff
 
 
diff --git a/test/unittests/test_LuTotNitr.py b/test/unittests/test_LuTotNitr.py
index 21a941e1..d97e107d 100644
--- a/test/unittests/test_LuTotNitr.py
+++ b/test/unittests/test_LuTotNitr.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import LuTotNitr
 
 
diff --git a/test/unittests/test_LuTotNitr_1.py b/test/unittests/test_LuTotNitr_1.py
index 193fcda6..3540329a 100644
--- a/test/unittests/test_LuTotNitr_1.py
+++ b/test/unittests/test_LuTotNitr_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import LuTotNitr_1
 
 
diff --git a/test/unittests/test_LuTotPhos.py b/test/unittests/test_LuTotPhos.py
index 27f134cf..c416f60d 100644
--- a/test/unittests/test_LuTotPhos.py
+++ b/test/unittests/test_LuTotPhos.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import LuTotPhos
 
 
diff --git a/test/unittests/test_Melt.py b/test/unittests/test_Melt.py
index 461ebb66..d775a5c1 100644
--- a/test/unittests/test_Melt.py
+++ b/test/unittests/test_Melt.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Melt
 
 
diff --git a/test/unittests/test_Melt_1.py b/test/unittests/test_Melt_1.py
index 8a0b301a..0b4be391 100644
--- a/test/unittests/test_Melt_1.py
+++ b/test/unittests/test_Melt_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Melt_1
 
 
diff --git a/test/unittests/test_N7b_1.py b/test/unittests/test_N7b_1.py
index 010f3351..7d4a2474 100644
--- a/test/unittests/test_N7b_1.py
+++ b/test/unittests/test_N7b_1.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.AvAnimalNSum.N7b_1 import N7b_1
 
 
diff --git a/test/unittests/test_N7b_2.py b/test/unittests/test_N7b_2.py
index 3df3cbf1..4d5d9166 100644
--- a/test/unittests/test_N7b_2.py
+++ b/test/unittests/test_N7b_2.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.AvAnimalNSum import N7b_2
 
 
diff --git a/test/unittests/test_NAGBUFFER.py b/test/unittests/test_NAGBUFFER.py
index d7e02454..daf7d495 100644
--- a/test/unittests/test_NAGBUFFER.py
+++ b/test/unittests/test_NAGBUFFER.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NAGBUFFER
 
 
diff --git a/test/unittests/test_NAWMSL.py b/test/unittests/test_NAWMSL.py
index 4c016333..49ea4877 100644
--- a/test/unittests/test_NAWMSL.py
+++ b/test/unittests/test_NAWMSL.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NAWMSL
 
 
diff --git a/test/unittests/test_NAWMSL_2.py b/test/unittests/test_NAWMSL_2.py
index e966b252..b04c86f4 100644
--- a/test/unittests/test_NAWMSL_2.py
+++ b/test/unittests/test_NAWMSL_2.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NAWMSL_2
 
 
diff --git a/test/unittests/test_NAWMSP.py b/test/unittests/test_NAWMSP.py
index 9d0f89ad..ff1dd1bd 100644
--- a/test/unittests/test_NAWMSP.py
+++ b/test/unittests/test_NAWMSP.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NAWMSP
 
 
diff --git a/test/unittests/test_NAWMSP_2.py b/test/unittests/test_NAWMSP_2.py
index 0623728f..c9ddaada 100644
--- a/test/unittests/test_NAWMSP_2.py
+++ b/test/unittests/test_NAWMSP_2.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NAWMSP_2
 
 
diff --git a/test/unittests/test_NAWSL_2.py b/test/unittests/test_NAWSL_2.py
index 800647df..478449f2 100644
--- a/test/unittests/test_NAWSL_2.py
+++ b/test/unittests/test_NAWSL_2.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NAWSL_2
 
 
diff --git a/test/unittests/test_NConc.py b/test/unittests/test_NConc.py
index fc83545c..37a5d3bb 100644
--- a/test/unittests/test_NConc.py
+++ b/test/unittests/test_NConc.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import NConc
 
 
diff --git a/test/unittests/test_NFEN.py b/test/unittests/test_NFEN.py
index d7a25408..7d3cb2ff 100644
--- a/test/unittests/test_NFEN.py
+++ b/test/unittests/test_NFEN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NFEN
 
 
diff --git a/test/unittests/test_NFENCING.py b/test/unittests/test_NFENCING.py
index 246fbb3a..889f4ed3 100644
--- a/test/unittests/test_NFENCING.py
+++ b/test/unittests/test_NFENCING.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NFENCING
 
 
diff --git a/test/unittests/test_NGAccManAppN.py b/test/unittests/test_NGAccManAppN.py
index 4f923112..1fe5d6b7 100644
--- a/test/unittests/test_NGAccManAppN.py
+++ b/test/unittests/test_NGAccManAppN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Loads import NGAccManAppN
 
 
diff --git a/test/unittests/test_NGAppManN.py b/test/unittests/test_NGAppManN.py
index d1a3e057..882a278e 100644
--- a/test/unittests/test_NGAppManN.py
+++ b/test/unittests/test_NGAppManN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Loads import NGAppManN
 
 
diff --git a/test/unittests/test_NGInitBarnN.py b/test/unittests/test_NGInitBarnN.py
index 5bee91c2..48fd0661 100644
--- a/test/unittests/test_NGInitBarnN.py
+++ b/test/unittests/test_NGInitBarnN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Loads import NGInitBarnN
 
 
diff --git a/test/unittests/test_NGLoadN.py b/test/unittests/test_NGLoadN.py
index be1ecd97..391c7d9b 100644
--- a/test/unittests/test_NGLoadN.py
+++ b/test/unittests/test_NGLoadN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Loads import NGLoadN
 from gwlfe.enums import YesOrNo
 
diff --git a/test/unittests/test_NGLostBarnN.py b/test/unittests/test_NGLostBarnN.py
index b9e7ea28..8c2ebd40 100644
--- a/test/unittests/test_NGLostBarnN.py
+++ b/test/unittests/test_NGLostBarnN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Losses import NGLostBarnN
 
 
diff --git a/test/unittests/test_NGLostBarnNSum.py b/test/unittests/test_NGLostBarnNSum.py
index e1e6f780..8d72bb40 100644
--- a/test/unittests/test_NGLostBarnNSum.py
+++ b/test/unittests/test_NGLostBarnNSum.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Losses import NGLostBarnNSum
 
 
diff --git a/test/unittests/test_NGLostManN.py b/test/unittests/test_NGLostManN.py
index 8977f3ef..04f0a7b6 100644
--- a/test/unittests/test_NGLostManN.py
+++ b/test/unittests/test_NGLostManN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.AFOS.nonGrazingAnimals.Losses import NGLostManN
 
 
diff --git a/test/unittests/test_NLU.py b/test/unittests/test_NLU.py
index 552a1cb5..1bed41d3 100644
--- a/test/unittests/test_NLU.py
+++ b/test/unittests/test_NLU.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestNLU(VariableUnitTest):
diff --git a/test/unittests/test_NRUNCON.py b/test/unittests/test_NRUNCON.py
index f75739a9..73d33d6e 100644
--- a/test/unittests/test_NRUNCON.py
+++ b/test/unittests/test_NRUNCON.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NRUNCON
 
 
diff --git a/test/unittests/test_NRUNCON_2.py b/test/unittests/test_NRUNCON_2.py
index c64c5927..fb476ca5 100644
--- a/test/unittests/test_NRUNCON_2.py
+++ b/test/unittests/test_NRUNCON_2.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.AgAnimal import NRUNCON_2
 
 
diff --git a/test/unittests/test_NSTAB.py b/test/unittests/test_NSTAB.py
index b7b1e9d7..1e201df2 100644
--- a/test/unittests/test_NSTAB.py
+++ b/test/unittests/test_NSTAB.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.Stream import NSTAB
 
 
diff --git a/test/unittests/test_NURBBANK.py b/test/unittests/test_NURBBANK.py
index 7f104633..d89ba9c0 100644
--- a/test/unittests/test_NURBBANK.py
+++ b/test/unittests/test_NURBBANK.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.Stream import NURBBANK
 
 
diff --git a/test/unittests/test_NetDisLoad.py b/test/unittests/test_NetDisLoad.py
index 4a6ae5ea..19ccedd1 100644
--- a/test/unittests/test_NetDisLoad.py
+++ b/test/unittests/test_NetDisLoad.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import NetDisLoad
 
 
diff --git a/test/unittests/test_NetSolidLoad.py b/test/unittests/test_NetSolidLoad.py
index 0c407c9d..41513b37 100644
--- a/test/unittests/test_NetSolidLoad.py
+++ b/test/unittests/test_NetSolidLoad.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import NetSolidLoad
 
 
diff --git a/test/unittests/test_NewCN.py b/test/unittests/test_NewCN.py
index c612d545..d0e17d62 100644
--- a/test/unittests/test_NewCN.py
+++ b/test/unittests/test_NewCN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import NewCN
 
 
diff --git a/test/unittests/test_PConc.py b/test/unittests/test_PConc.py
index cb1bd4f1..8c58d900 100644
--- a/test/unittests/test_PConc.py
+++ b/test/unittests/test_PConc.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import PConc
 
 
diff --git a/test/unittests/test_PcntUrbanArea.py b/test/unittests/test_PcntUrbanArea.py
index 2318642a..62c30c1d 100644
--- a/test/unittests/test_PcntUrbanArea.py
+++ b/test/unittests/test_PcntUrbanArea.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Urb import PcntUrbanArea
 
 
diff --git a/test/unittests/test_Percolation.py b/test/unittests/test_Percolation.py
index 25508f76..1edec1ec 100644
--- a/test/unittests/test_Percolation.py
+++ b/test/unittests/test_Percolation.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Percolation
 
 
diff --git a/test/unittests/test_QRunI.py b/test/unittests/test_QRunI.py
index 68803609..92dabb83 100644
--- a/test/unittests/test_QRunI.py
+++ b/test/unittests/test_QRunI.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import QrunI
 
 
diff --git a/test/unittests/test_QTotal.py b/test/unittests/test_QTotal.py
index 3fdecb16..de00ca74 100644
--- a/test/unittests/test_QTotal.py
+++ b/test/unittests/test_QTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import QTotal
 
 
diff --git a/test/unittests/test_Qrun.py b/test/unittests/test_Qrun.py
index 26b674e9..51773116 100644
--- a/test/unittests/test_Qrun.py
+++ b/test/unittests/test_Qrun.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import Qrun
 
 
diff --git a/test/unittests/test_QrunP.py b/test/unittests/test_QrunP.py
index 33132790..c42eab84 100644
--- a/test/unittests/test_QrunP.py
+++ b/test/unittests/test_QrunP.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import QrunP
 
 
diff --git a/test/unittests/test_Rain.py b/test/unittests/test_Rain.py
index 0a7ff637..066822a2 100644
--- a/test/unittests/test_Rain.py
+++ b/test/unittests/test_Rain.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Rain
 
 
diff --git a/test/unittests/test_RetentFactorN.py b/test/unittests/test_RetentFactorN.py
index 6d67a22b..636fd2ba 100644
--- a/test/unittests/test_RetentFactorN.py
+++ b/test/unittests/test_RetentFactorN.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestRetentFactorN(VariableUnitTest):
diff --git a/test/unittests/test_Retention.py b/test/unittests/test_Retention.py
index 4f3b9d58..a8954170 100644
--- a/test/unittests/test_Retention.py
+++ b/test/unittests/test_Retention.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import Retention
 
 
diff --git a/test/unittests/test_RetentionEff.py b/test/unittests/test_RetentionEff.py
index 84c465d0..c572caa9 100644
--- a/test/unittests/test_RetentionEff.py
+++ b/test/unittests/test_RetentionEff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import RetentionEff
 
 
diff --git a/test/unittests/test_Runoff.py b/test/unittests/test_Runoff.py
index 283b5b6a..87b0a72f 100644
--- a/test/unittests/test_Runoff.py
+++ b/test/unittests/test_Runoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import Runoff
 
 
diff --git a/test/unittests/test_RurAreaTotal.py b/test/unittests/test_RurAreaTotal.py
index d18a7c88..af16fc3c 100644
--- a/test/unittests/test_RurAreaTotal.py
+++ b/test/unittests/test_RurAreaTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse import RurAreaTotal
 
 
diff --git a/test/unittests/test_RurEros.py b/test/unittests/test_RurEros.py
index b059127c..c0b664f0 100644
--- a/test/unittests/test_RurEros.py
+++ b/test/unittests/test_RurEros.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import RurEros
 
 
diff --git a/test/unittests/test_RurQRunoff.py b/test/unittests/test_RurQRunoff.py
index 12d1ab33..224a14de 100644
--- a/test/unittests/test_RurQRunoff.py
+++ b/test/unittests/test_RurQRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import RurQRunoff
 
 
diff --git a/test/unittests/test_RuralQTotal.py b/test/unittests/test_RuralQTotal.py
index 0fcf4129..a14e902f 100644
--- a/test/unittests/test_RuralQTotal.py
+++ b/test/unittests/test_RuralQTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import RuralQTotal
 
 
diff --git a/test/unittests/test_RuralRunoff.py b/test/unittests/test_RuralRunoff.py
index 0b54ef0f..02d04332 100644
--- a/test/unittests/test_RuralRunoff.py
+++ b/test/unittests/test_RuralRunoff.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestRuralRunoff(VariableUnitTest):
diff --git a/test/unittests/test_SEDFEN.py b/test/unittests/test_SEDFEN.py
index 33d4ccae..b9b8ae6f 100644
--- a/test/unittests/test_SEDFEN.py
+++ b/test/unittests/test_SEDFEN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.Stream import SEDFEN
 
 
diff --git a/test/unittests/test_SEDSTAB.py b/test/unittests/test_SEDSTAB.py
index a5e3188d..0fdf9e25 100644
--- a/test/unittests/test_SEDSTAB.py
+++ b/test/unittests/test_SEDSTAB.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.Stream import SEDSTAB
 
 
diff --git a/test/unittests/test_SURBBANK.py b/test/unittests/test_SURBBANK.py
index 7d280e91..98ba895c 100644
--- a/test/unittests/test_SURBBANK.py
+++ b/test/unittests/test_SURBBANK.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.Stream import SURBBANK
 
 
diff --git a/test/unittests/test_SatStor.py b/test/unittests/test_SatStor.py
index 1ad872c8..e9e275d5 100644
--- a/test/unittests/test_SatStor.py
+++ b/test/unittests/test_SatStor.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import SatStor
 
 
diff --git a/test/unittests/test_SatStorCarryOver.py b/test/unittests/test_SatStorCarryOver.py
index 0053bf86..bf97f74f 100644
--- a/test/unittests/test_SatStorCarryOver.py
+++ b/test/unittests/test_SatStorCarryOver.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import SatStorCarryOver
 
 
diff --git a/test/unittests/test_SedAFactor.py b/test/unittests/test_SedAFactor.py
index d109b9d1..dc49cba6 100644
--- a/test/unittests/test_SedAFactor.py
+++ b/test/unittests/test_SedAFactor.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import SedAFactor
 
 
diff --git a/test/unittests/test_SedTrans.py b/test/unittests/test_SedTrans.py
index c7a34a4d..4ce240f2 100644
--- a/test/unittests/test_SedTrans.py
+++ b/test/unittests/test_SedTrans.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Erosion import SedTrans
 
 
diff --git a/test/unittests/test_SedYield.py b/test/unittests/test_SedYield.py
index 13d38686..b2e211a9 100644
--- a/test/unittests/test_SedYield.py
+++ b/test/unittests/test_SedYield.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import SedYield
 
 
diff --git a/test/unittests/test_SedYield_1.py b/test/unittests/test_SedYield_1.py
index 8d0eead1..f5d681fd 100644
--- a/test/unittests/test_SedYield_1.py
+++ b/test/unittests/test_SedYield_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import SedYield_1
 
 
diff --git a/test/unittests/test_StreamBankEros.py b/test/unittests/test_StreamBankEros.py
index 4c88c591..c36f662a 100644
--- a/test/unittests/test_StreamBankEros.py
+++ b/test/unittests/test_StreamBankEros.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import StreamBankEros
 
 
diff --git a/test/unittests/test_StreamBankEros_1.py b/test/unittests/test_StreamBankEros_1.py
index b6826a13..5451c373 100644
--- a/test/unittests/test_StreamBankEros_1.py
+++ b/test/unittests/test_StreamBankEros_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import StreamBankEros_1
 
 
diff --git a/test/unittests/test_StreamBankN.py b/test/unittests/test_StreamBankN.py
index f3b85fa1..baec18c5 100644
--- a/test/unittests/test_StreamBankN.py
+++ b/test/unittests/test_StreamBankN.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import StreamBankN
 
 
diff --git a/test/unittests/test_StreamBankNSum.py b/test/unittests/test_StreamBankNSum.py
index 35ff5d7d..03b6dbb3 100644
--- a/test/unittests/test_StreamBankNSum.py
+++ b/test/unittests/test_StreamBankNSum.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import StreamBankNSum
 
 
diff --git a/test/unittests/test_StreamBankN_1.py b/test/unittests/test_StreamBankN_1.py
index ec59dcf3..7a886b23 100644
--- a/test/unittests/test_StreamBankN_1.py
+++ b/test/unittests/test_StreamBankN_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import StreamBankN_1
 
 
diff --git a/test/unittests/test_StreamFlow.py b/test/unittests/test_StreamFlow.py
index c00ab518..27550ff1 100644
--- a/test/unittests/test_StreamFlow.py
+++ b/test/unittests/test_StreamFlow.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import StreamFlow
 
 
diff --git a/test/unittests/test_StreamFlowLE.py b/test/unittests/test_StreamFlowLE.py
index 7fa95cd2..64ad5e07 100644
--- a/test/unittests/test_StreamFlowLE.py
+++ b/test/unittests/test_StreamFlowLE.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import StreamFlowLE
 
 
diff --git a/test/unittests/test_StreamFlowVol.py b/test/unittests/test_StreamFlowVol.py
index 14be5364..1c9ae004 100644
--- a/test/unittests/test_StreamFlowVol.py
+++ b/test/unittests/test_StreamFlowVol.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import StreamFlowVol
 
 
diff --git a/test/unittests/test_StreamFlow_1.py b/test/unittests/test_StreamFlow_1.py
index f0ecb665..2ee335ee 100644
--- a/test/unittests/test_StreamFlow_1.py
+++ b/test/unittests/test_StreamFlow_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import StreamFlow_1
 
 
diff --git a/test/unittests/test_SurfaceLoad.py b/test/unittests/test_SurfaceLoad.py
index 0a33025f..9e1bfefc 100644
--- a/test/unittests/test_SurfaceLoad.py
+++ b/test/unittests/test_SurfaceLoad.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import SurfaceLoad
 
 
diff --git a/test/unittests/test_SurfaceLoad_1.py b/test/unittests/test_SurfaceLoad_1.py
index 0612ff7b..33652cab 100644
--- a/test/unittests/test_SurfaceLoad_1.py
+++ b/test/unittests/test_SurfaceLoad_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.Loading import SurfaceLoad_1
 
 
diff --git a/test/unittests/test_TileDrain.py b/test/unittests/test_TileDrain.py
index ab070a47..670f56fa 100644
--- a/test/unittests/test_TileDrain.py
+++ b/test/unittests/test_TileDrain.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Ag import TileDrain
 
 
diff --git a/test/unittests/test_TileDrainGW.py b/test/unittests/test_TileDrainGW.py
index db56a2a9..1fd4c0c9 100644
--- a/test/unittests/test_TileDrainGW.py
+++ b/test/unittests/test_TileDrainGW.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Ag import TileDrainGW
 
 
diff --git a/test/unittests/test_TileDrainRO.py b/test/unittests/test_TileDrainRO.py
index aff56c7c..d717f085 100644
--- a/test/unittests/test_TileDrainRO.py
+++ b/test/unittests/test_TileDrainRO.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Ag import TileDrainRO
 
 
diff --git a/test/unittests/test_TotAEU.py b/test/unittests/test_TotAEU.py
index 8e4329f4..c98e9cc4 100644
--- a/test/unittests/test_TotAEU.py
+++ b/test/unittests/test_TotAEU.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.Animals import TotAEU
 
 
diff --git a/test/unittests/test_TotAreaMeters.py b/test/unittests/test_TotAreaMeters.py
index c9e7ff72..b7354698 100644
--- a/test/unittests/test_TotAreaMeters.py
+++ b/test/unittests/test_TotAreaMeters.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestTotAreaMeters(VariableUnitTest):
diff --git a/test/unittests/test_TotLAEU.py b/test/unittests/test_TotLAEU.py
index 93281cde..bb599329 100644
--- a/test/unittests/test_TotLAEU.py
+++ b/test/unittests/test_TotLAEU.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.Animals import TotLAEU
 
 
diff --git a/test/unittests/test_TotPAEU.py b/test/unittests/test_TotPAEU.py
index cbcf18ab..dedecab4 100644
--- a/test/unittests/test_TotPAEU.py
+++ b/test/unittests/test_TotPAEU.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.Animals import TotPAEU
 
 
diff --git a/test/unittests/test_UnSatStorCarryover.py b/test/unittests/test_UnSatStorCarryover.py
index dfa6e74f..1b4ebadf 100644
--- a/test/unittests/test_UnSatStorCarryover.py
+++ b/test/unittests/test_UnSatStorCarryover.py
@@ -2,7 +2,7 @@
 
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import UnSatStorCarryover
 
 
diff --git a/test/unittests/test_UncontrolledQ.py b/test/unittests/test_UncontrolledQ.py
index a5d5b71c..4b4bfa9b 100644
--- a/test/unittests/test_UncontrolledQ.py
+++ b/test/unittests/test_UncontrolledQ.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestUncontrolledQ(VariableUnitTest):
diff --git a/test/unittests/test_UrbAreaTotal.py b/test/unittests/test_UrbAreaTotal.py
index 7d1df5e8..138f137e 100644
--- a/test/unittests/test_UrbAreaTotal.py
+++ b/test/unittests/test_UrbAreaTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.LandUse.Urb import UrbAreaTotal
 
 
diff --git a/test/unittests/test_UrbLoadRed.py b/test/unittests/test_UrbLoadRed.py
index c9824b8c..ef69c189 100644
--- a/test/unittests/test_UrbLoadRed.py
+++ b/test/unittests/test_UrbLoadRed.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.BMPs.Stream import UrbLoadRed
 
 
diff --git a/test/unittests/test_UrbQRunoff.py b/test/unittests/test_UrbQRunoff.py
index 947b656e..06617a7f 100644
--- a/test/unittests/test_UrbQRunoff.py
+++ b/test/unittests/test_UrbQRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import UrbQRunoff
 
 
diff --git a/test/unittests/test_UrbSedLoad.py b/test/unittests/test_UrbSedLoad.py
index 49dda8bb..b286850f 100644
--- a/test/unittests/test_UrbSedLoad.py
+++ b/test/unittests/test_UrbSedLoad.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class TestUrbSedLoad(VariableUnitTest):
diff --git a/test/unittests/test_UrbanQTotal.py b/test/unittests/test_UrbanQTotal.py
index 85a22fda..79032397 100644
--- a/test/unittests/test_UrbanQTotal.py
+++ b/test/unittests/test_UrbanQTotal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import UrbanQTotal
 
 
diff --git a/test/unittests/test_UrbanQTotal_1.py b/test/unittests/test_UrbanQTotal_1.py
index 30662676..3e73cabf 100644
--- a/test/unittests/test_UrbanQTotal_1.py
+++ b/test/unittests/test_UrbanQTotal_1.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Discharge import UrbanQTotal_1
 
 
diff --git a/test/unittests/test_UrbanRunoff.py b/test/unittests/test_UrbanRunoff.py
index 2af78192..48876eb6 100644
--- a/test/unittests/test_UrbanRunoff.py
+++ b/test/unittests/test_UrbanRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import UrbanRunoff
 
 
diff --git a/test/unittests/test_UrbanRunoffLiter.py b/test/unittests/test_UrbanRunoffLiter.py
index 2aa4ced9..e39ccb06 100644
--- a/test/unittests/test_UrbanRunoffLiter.py
+++ b/test/unittests/test_UrbanRunoffLiter.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import UrbRunoffLiter
 
 
diff --git a/test/unittests/test_WashImperv.py b/test/unittests/test_WashImperv.py
index a9f2fc81..b2fca5bd 100644
--- a/test/unittests/test_WashImperv.py
+++ b/test/unittests/test_WashImperv.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import WashImperv
 
 
diff --git a/test/unittests/test_WashPerv.py b/test/unittests/test_WashPerv.py
index ab1e0a09..bac7d615 100644
--- a/test/unittests/test_WashPerv.py
+++ b/test/unittests/test_WashPerv.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import WashPerv
 
 
diff --git a/test/unittests/test_Water.py b/test/unittests/test_Water.py
index 4db639f9..983f762f 100644
--- a/test/unittests/test_Water.py
+++ b/test/unittests/test_Water.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Water
 
 
diff --git a/test/unittests/test_Withdrawal.py b/test/unittests/test_Withdrawal.py
index 79f935d8..04c69d5e 100644
--- a/test/unittests/test_Withdrawal.py
+++ b/test/unittests/test_Withdrawal.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Withdrawal
 
 
diff --git a/test/unittests/test_et.py b/test/unittests/test_et.py
index 93e7e029..c568de06 100644
--- a/test/unittests/test_et.py
+++ b/test/unittests/test_et.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import ET
 
 
diff --git a/test/unittests/test_lu.py b/test/unittests/test_lu.py
index 3a46e5e2..a581247b 100644
--- a/test/unittests/test_lu.py
+++ b/test/unittests/test_lu.py
@@ -1,4 +1,4 @@
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 
 
 class Testlu(VariableUnitTest):
diff --git a/test/unittests/test_n7b.py b/test/unittests/test_n7b.py
index 859f5679..7b8bf6d3 100644
--- a/test/unittests/test_n7b.py
+++ b/test/unittests/test_n7b.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Output.AvAnimalNSum import N7b
 
 
diff --git a/test/unittests/test_nRunoff.py b/test/unittests/test_nRunoff.py
index 7501a189..154669e6 100644
--- a/test/unittests/test_nRunoff.py
+++ b/test/unittests/test_nRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import nRunoff
 
 
diff --git a/test/unittests/test_pRunoff.py b/test/unittests/test_pRunoff.py
index ae36f258..b8e11747 100644
--- a/test/unittests/test_pRunoff.py
+++ b/test/unittests/test_pRunoff.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns.Runoff import pRunoff
 
 
diff --git a/test/unittests/test_precipitation.py b/test/unittests/test_precipitation.py
index ec2bec25..e888f318 100644
--- a/test/unittests/test_precipitation.py
+++ b/test/unittests/test_precipitation.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.Input.WaterBudget import Precipitation
 
 
diff --git a/test/unittests/test_ptsrcflow.py b/test/unittests/test_ptsrcflow.py
index b0bb6fb0..6a05ec7f 100644
--- a/test/unittests/test_ptsrcflow.py
+++ b/test/unittests/test_ptsrcflow.py
@@ -1,6 +1,6 @@
 import numpy as np
 
-from VariableUnittest import VariableUnitTest
+from .VariableUnitTest import VariableUnitTest
 from gwlfe.MultiUse_Fxns import PtSrcFlow