diff --git a/geomagio/Controller.py b/geomagio/Controller.py
index e923d231a5ce2ac0ea6b73b5fd89145abd942ecd..27a2e90d173648467ab87dc358d829ac0aca177b 100644
--- a/geomagio/Controller.py
+++ b/geomagio/Controller.py
@@ -1,23 +1,23 @@
 """Controller class for geomag algorithms"""
-
+from __future__ import absolute_import
 
 import argparse
 import sys
 from obspy.core import Stream, UTCDateTime
-from algorithm import algorithms
-from PlotTimeseriesFactory import PlotTimeseriesFactory
-from StreamTimeseriesFactory import StreamTimeseriesFactory
-import TimeseriesUtility
+from .algorithm import algorithms
+from .PlotTimeseriesFactory import PlotTimeseriesFactory
+from .StreamTimeseriesFactory import StreamTimeseriesFactory
+from . import TimeseriesUtility
 
 # factory packages
-import binlog
-import edge
-import iaga2002
-import pcdcp
-import imfv122
-import imfv283
-import temperature
-import vbf
+from . import binlog
+from . import edge
+from . import iaga2002
+from . import pcdcp
+from . import imfv122
+from . import imfv283
+from . import temperature
+from . import vbf
 
 
 class Controller(object):
diff --git a/geomagio/PlotTimeseriesFactory.py b/geomagio/PlotTimeseriesFactory.py
index 0406872397785879e1772c15bb4075b938429c85..b3be6cfe8d8f5c96c034f0e02200768b26b35616 100644
--- a/geomagio/PlotTimeseriesFactory.py
+++ b/geomagio/PlotTimeseriesFactory.py
@@ -1,6 +1,8 @@
 """Abstract Timeseries Factory Interface."""
+from __future__ import absolute_import
+
 from obspy.core import Stream
-from TimeseriesFactory import TimeseriesFactory
+from .TimeseriesFactory import TimeseriesFactory
 
 
 class PlotTimeseriesFactory(TimeseriesFactory):
diff --git a/geomagio/StreamConverter.py b/geomagio/StreamConverter.py
index e352ebb53501564078e693e16cfd1f4e8eb40b88..f0ff48b64ee920170ea3cf8934041e81c6f768ae 100644
--- a/geomagio/StreamConverter.py
+++ b/geomagio/StreamConverter.py
@@ -6,10 +6,11 @@ Geo: Based on Geographic North.  X, Y, Z, F
 Obs: Based on the observatories orientaion. H, E, Z, F, d0
 Mag: Based on Magnetic North. H, D, Z, F
 """
+from __future__ import absolute_import
 
 import numpy
 import obspy.core
-import ChannelConverter
+from . import ChannelConverter
 
 
 def get_geo_from_mag(mag):
diff --git a/geomagio/StreamTimeseriesFactory.py b/geomagio/StreamTimeseriesFactory.py
index fb7f00ae1124831773e4fbd18497251b34732550..77a4214add378f70bde47acca5f10734176f58eb 100644
--- a/geomagio/StreamTimeseriesFactory.py
+++ b/geomagio/StreamTimeseriesFactory.py
@@ -1,6 +1,7 @@
 """Stream wrapper for TimeseriesFactory."""
+from __future__ import absolute_import
 
-from TimeseriesFactory import TimeseriesFactory
+from .TimeseriesFactory import TimeseriesFactory
 
 
 class StreamTimeseriesFactory(TimeseriesFactory):
diff --git a/geomagio/TimeseriesFactory.py b/geomagio/TimeseriesFactory.py
index f46c728cc1319ce2b3df554bca0219fca30058aa..1f29ed1da05050a293f300b121e4dd06e815305f 100644
--- a/geomagio/TimeseriesFactory.py
+++ b/geomagio/TimeseriesFactory.py
@@ -1,11 +1,13 @@
 """Abstract Timeseries Factory Interface."""
+from __future__ import absolute_import
+
 import numpy
 import obspy.core
 import os
 import sys
-from TimeseriesFactoryException import TimeseriesFactoryException
-import TimeseriesUtility
-import Util
+from .TimeseriesFactoryException import TimeseriesFactoryException
+from . import TimeseriesUtility
+from . import Util
 
 
 class TimeseriesFactory(object):
diff --git a/geomagio/Util.py b/geomagio/Util.py
index 8efbeda304bb4cfcafcbfee94cec1064d17517a8..e53d25c25cf793037bbe40935e2bb39f404f41b2 100644
--- a/geomagio/Util.py
+++ b/geomagio/Util.py
@@ -2,7 +2,7 @@ import pycurl
 import numpy
 import os
 from obspy.core import Stats, Trace
-from StringIO import StringIO
+from io import StringIO
 
 
 class ObjectView(object):
diff --git a/geomagio/__init__.py b/geomagio/__init__.py
index b61b5c801417c54956145f352c55a4c4377f4683..e896583b7b50762cf9858d9032c35d3c050a25b4 100644
--- a/geomagio/__init__.py
+++ b/geomagio/__init__.py
@@ -1,16 +1,18 @@
 """
 Geomag Algorithm Module
 """
-import ChannelConverter
-import StreamConverter
+from __future__ import absolute_import
 
-from Controller import Controller
-from ObservatoryMetadata import ObservatoryMetadata
-from PlotTimeseriesFactory import PlotTimeseriesFactory
-from TimeseriesFactory import TimeseriesFactory
-from TimeseriesFactoryException import TimeseriesFactoryException
-import TimeseriesUtility
-import Util
+from . import ChannelConverter
+from . import StreamConverter
+
+from .Controller import Controller
+from .ObservatoryMetadata import ObservatoryMetadata
+from .PlotTimeseriesFactory import PlotTimeseriesFactory
+from .TimeseriesFactory import TimeseriesFactory
+from .TimeseriesFactoryException import TimeseriesFactoryException
+from . import TimeseriesUtility
+from . import Util
 
 __all__ = [
     'ChannelConverter',
diff --git a/geomagio/algorithm/AdjustedAlgorithm.py b/geomagio/algorithm/AdjustedAlgorithm.py
index 5e950a68cec307552de9061cf356fccf1e5e91cf..5d91eb31b50f0f4fb135da14470313a261891e0c 100644
--- a/geomagio/algorithm/AdjustedAlgorithm.py
+++ b/geomagio/algorithm/AdjustedAlgorithm.py
@@ -2,7 +2,9 @@
     related geographic coordinate system, by using transformations generated
     from absolute, baseline measurements.
 """
-from Algorithm import Algorithm
+from __future__ import absolute_import
+
+from .Algorithm import Algorithm
 import json
 import numpy as np
 from obspy.core import Stream, Stats
diff --git a/geomagio/algorithm/DeltaFAlgorithm.py b/geomagio/algorithm/DeltaFAlgorithm.py
index 616c83d87db39049276edba93466343cfad1cbe8..8541dbdcfead477b1062666e651aa7899076f147 100644
--- a/geomagio/algorithm/DeltaFAlgorithm.py
+++ b/geomagio/algorithm/DeltaFAlgorithm.py
@@ -1,9 +1,10 @@
 """Algorithm that creates a deltaf
 
 """
+from __future__ import absolute_import
 
-from Algorithm import Algorithm
-from AlgorithmException import AlgorithmException
+from .Algorithm import Algorithm
+from .AlgorithmException import AlgorithmException
 from .. import StreamConverter
 
 # List of channels by geomagnetic observatory orientation.
diff --git a/geomagio/algorithm/SqDistAlgorithm.py b/geomagio/algorithm/SqDistAlgorithm.py
index d50c0b81e969015b00369a1de1f8ead9a11ab2b2..faec56ab7453fc6be7a5d7ff96de799598848c39 100644
--- a/geomagio/algorithm/SqDistAlgorithm.py
+++ b/geomagio/algorithm/SqDistAlgorithm.py
@@ -11,10 +11,11 @@
     Use of fmin_l_bfgs_b to estimate parameters inspired by Andre Queiroz:
         https://gist.github.com/andrequeiroz/5888967
 """
+from __future__ import absolute_import
 
 from .. import StreamConverter
-from Algorithm import Algorithm
-from AlgorithmException import AlgorithmException
+from .Algorithm import Algorithm
+from .AlgorithmException import AlgorithmException
 import json
 import numpy as np
 from obspy.core import Stream, UTCDateTime
diff --git a/geomagio/algorithm/XYZAlgorithm.py b/geomagio/algorithm/XYZAlgorithm.py
index 64d1e91587b64f396125bdb98327c5cb7f2c74c2..92aa4585c53b0c19dc3f6289a444c61a685fd5fd 100644
--- a/geomagio/algorithm/XYZAlgorithm.py
+++ b/geomagio/algorithm/XYZAlgorithm.py
@@ -2,9 +2,10 @@
     related coordinate system.
 
 """
+from __future__ import absolute_import
 
-from Algorithm import Algorithm
-from AlgorithmException import AlgorithmException
+from .Algorithm import Algorithm
+from .AlgorithmException import AlgorithmException
 from .. import StreamConverter
 
 # List of channels by geomagnetic observatory orientation.
diff --git a/geomagio/algorithm/__init__.py b/geomagio/algorithm/__init__.py
index 2f95af0eae62b83253d3a68ae49a03b205272313..2a6ac517a2a7ac0758f017f848407342b5b5376f 100644
--- a/geomagio/algorithm/__init__.py
+++ b/geomagio/algorithm/__init__.py
@@ -1,15 +1,16 @@
 """
 Geomag Algorithms module
 """
+from __future__ import absolute_import
 
 # base classes
-from Algorithm import Algorithm
-from AlgorithmException import AlgorithmException
+from .Algorithm import Algorithm
+from .AlgorithmException import AlgorithmException
 # algorithms
-from AdjustedAlgorithm import AdjustedAlgorithm
-from DeltaFAlgorithm import DeltaFAlgorithm
-from SqDistAlgorithm import SqDistAlgorithm
-from XYZAlgorithm import XYZAlgorithm
+from .AdjustedAlgorithm import AdjustedAlgorithm
+from .DeltaFAlgorithm import DeltaFAlgorithm
+from .SqDistAlgorithm import SqDistAlgorithm
+from .XYZAlgorithm import XYZAlgorithm
 
 
 # algorithms is used by Controller to auto generate arguments
diff --git a/geomagio/binlog/BinLogFactory.py b/geomagio/binlog/BinLogFactory.py
index ee46eba857e2039a185367c3ed5f8a4fed8fe970..dbe5b882f6736a3795664d64128bf048654b4230 100644
--- a/geomagio/binlog/BinLogFactory.py
+++ b/geomagio/binlog/BinLogFactory.py
@@ -1,7 +1,8 @@
 """Factory that creates BinLog Files."""
+from __future__ import absolute_import
 
 from ..TimeseriesFactory import TimeseriesFactory
-from BinLogWriter import BinLogWriter
+from .BinLogWriter import BinLogWriter
 
 
 class BinLogFactory(TimeseriesFactory):
diff --git a/geomagio/binlog/BinLogWriter.py b/geomagio/binlog/BinLogWriter.py
index ced87b800ce74ff3623f3b6abcca1b79be84e61d..abea776cd137ffe2fb196df1b06ed3b258558c64 100644
--- a/geomagio/binlog/BinLogWriter.py
+++ b/geomagio/binlog/BinLogWriter.py
@@ -1,6 +1,6 @@
 
 import numpy
-from cStringIO import StringIO
+from io import StringIO
 from datetime import datetime
 from .. import ChannelConverter, TimeseriesUtility
 from ..TimeseriesFactoryException import TimeseriesFactoryException
diff --git a/geomagio/binlog/StreamBinLogFactory.py b/geomagio/binlog/StreamBinLogFactory.py
index 6fda2de572692126a23cdadb8ad9f89668b821e9..e915b2a4a49cbb00763874b084544ab64ae3c7a9 100644
--- a/geomagio/binlog/StreamBinLogFactory.py
+++ b/geomagio/binlog/StreamBinLogFactory.py
@@ -1,6 +1,7 @@
 """Factory to load BinLog files from an input StreamBinLogFactory."""
+from __future__ import absolute_import
 
-from BinLogFactory import BinLogFactory
+from .BinLogFactory import BinLogFactory
 
 
 class StreamBinLogFactory(BinLogFactory):
diff --git a/geomagio/binlog/__init__.py b/geomagio/binlog/__init__.py
index 533042e79b16c99b066e94973962c869be95bbda..93132290aa7db731c4addc581a9d499e9c048459 100644
--- a/geomagio/binlog/__init__.py
+++ b/geomagio/binlog/__init__.py
@@ -1,9 +1,10 @@
 """IO Module for BinLog Format
 """
+from __future__ import absolute_import
 
-from BinLogFactory import BinLogFactory
-from StreamBinLogFactory import StreamBinLogFactory
-from BinLogWriter import BinLogWriter
+from .BinLogFactory import BinLogFactory
+from .StreamBinLogFactory import StreamBinLogFactory
+from .BinLogWriter import BinLogWriter
 
 
 __all__ = [
diff --git a/geomagio/edge/EdgeFactory.py b/geomagio/edge/EdgeFactory.py
index 7f9262c73b16f80b9472426137d70a969d3b8181..62875bf72dcbcaf4bb6efaf86e646e6decef6006 100644
--- a/geomagio/edge/EdgeFactory.py
+++ b/geomagio/edge/EdgeFactory.py
@@ -8,9 +8,10 @@ to take advantage of it's newer realtime abilities.
 
 Edge is the USGS earthquake hazard centers replacement for earthworm.
 """
+from __future__ import absolute_import
 
 import sys
-import StringIO
+from io import StringIO
 import numpy
 import numpy.ma
 import obspy.core
@@ -23,13 +24,13 @@ from datetime import datetime
 #     from obspy import earthworm
 
 # use local version of earthworm client to test memory leak fix
-import client as earthworm
+from . import client as earthworm
 
 from .. import ChannelConverter, TimeseriesUtility
 from ..TimeseriesFactory import TimeseriesFactory
 from ..TimeseriesFactoryException import TimeseriesFactoryException
 from ..ObservatoryMetadata import ObservatoryMetadata
-from RawInputClient import RawInputClient
+from .RawInputClient import RawInputClient
 
 
 class EdgeFactory(TimeseriesFactory):
@@ -140,7 +141,7 @@ class EdgeFactory(TimeseriesFactory):
         # need this until https://github.com/obspy/obspy/pull/1179
         # replace stdout
         original_stdout = sys.stdout
-        temp_stdout = StringIO.StringIO()
+        temp_stdout = StringIO()
         try:
             sys.stdout = temp_stdout
             # get the timeseries
diff --git a/geomagio/edge/RawInputClient.py b/geomagio/edge/RawInputClient.py
index d9bf23fc847f50923cdd97bedfde74f62d459d7a..799099b20d088de65bb3cdb2727e3b7adaf5998b 100644
--- a/geomagio/edge/RawInputClient.py
+++ b/geomagio/edge/RawInputClient.py
@@ -222,7 +222,7 @@ class RawInputClient():
                 self._open_socket()
             self.socket.sendall(buf)
             self.sequence += 1
-        except socket.error, v:
+        except socket.error as v:
             error = 'Socket error %d' % v[0]
             sys.stderr.write(error)
             raise TimeseriesFactoryException(error)
@@ -412,7 +412,7 @@ class RawInputClient():
                 newsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                 newsocket.connect((self.host, self.port))
                 done = True
-            except socket.error, v:
+            except socket.error as v:
                 sys.stderr.write('Could not connect to socket, trying again')
                 sys.stderr.write('sockect error %d' % v[0])
                 sleep(1)
diff --git a/geomagio/edge/__init__.py b/geomagio/edge/__init__.py
index ba615d36c791013dd5e9be3d29709bdb5dbecb90..589bc42bfd74a03997ff1188f08eb5752ab1903d 100644
--- a/geomagio/edge/__init__.py
+++ b/geomagio/edge/__init__.py
@@ -1,9 +1,10 @@
 """IO Module for Edge Format
 """
+from __future__ import absolute_import
 
-from EdgeFactory import EdgeFactory
-from LocationCode import LocationCode
-from RawInputClient import RawInputClient
+from .EdgeFactory import EdgeFactory
+from .LocationCode import LocationCode
+from .RawInputClient import RawInputClient
 
 __all__ = [
     'EdgeFactory',
diff --git a/geomagio/iaga2002/IAGA2002Factory.py b/geomagio/iaga2002/IAGA2002Factory.py
index cc575782de5a7f59825dc6d11c795628a3f04c0d..b7f5f601e3287447b14b37126e4531e67c9ec596 100644
--- a/geomagio/iaga2002/IAGA2002Factory.py
+++ b/geomagio/iaga2002/IAGA2002Factory.py
@@ -1,10 +1,11 @@
 """Factory that loads IAGA2002 Files."""
+from __future__ import absolute_import
 
 import obspy.core
 from .. import ChannelConverter
 from ..TimeseriesFactory import TimeseriesFactory
-from IAGA2002Parser import IAGA2002Parser
-from IAGA2002Writer import IAGA2002Writer
+from .IAGA2002Parser import IAGA2002Parser
+from .IAGA2002Writer import IAGA2002Writer
 
 
 # pattern for iaga 2002 file names
diff --git a/geomagio/iaga2002/IAGA2002Writer.py b/geomagio/iaga2002/IAGA2002Writer.py
index b74bcc2be109e199a57a99194639ccacc7ec3c8a..5a1e2ce3a6f36327830a7ee082f23507780466c7 100644
--- a/geomagio/iaga2002/IAGA2002Writer.py
+++ b/geomagio/iaga2002/IAGA2002Writer.py
@@ -1,12 +1,13 @@
+from __future__ import absolute_import
 
-from cStringIO import StringIO
+from io import StringIO
 from datetime import datetime
 import numpy
 import textwrap
 from .. import ChannelConverter, TimeseriesUtility
 from ..TimeseriesFactoryException import TimeseriesFactoryException
 from ..Util import create_empty_trace
-import IAGA2002Parser
+from . import IAGA2002Parser
 
 
 class IAGA2002Writer(object):
diff --git a/geomagio/iaga2002/StreamIAGA2002Factory.py b/geomagio/iaga2002/StreamIAGA2002Factory.py
index 7532aef0ac086d4e4cb9dbfaec80cf1463076531..565a18183de9f1ba380f7981cac6343b946ebb30 100644
--- a/geomagio/iaga2002/StreamIAGA2002Factory.py
+++ b/geomagio/iaga2002/StreamIAGA2002Factory.py
@@ -1,6 +1,7 @@
 """Factory to load IAGA2002 files from an input StreamIAGA2002Factory."""
+from __future__ import absolute_import
 
-from IAGA2002Factory import IAGA2002Factory
+from .IAGA2002Factory import IAGA2002Factory
 
 
 class StreamIAGA2002Factory(IAGA2002Factory):
diff --git a/geomagio/iaga2002/__init__.py b/geomagio/iaga2002/__init__.py
index 5238db99809bc4d8f2334f98f5623330fc572be7..16f75d13441a225e4fe7715d1429183c802f1c6e 100644
--- a/geomagio/iaga2002/__init__.py
+++ b/geomagio/iaga2002/__init__.py
@@ -3,11 +3,12 @@
 Based on documentation at:
   http://www.ngdc.noaa.gov/IAGA/vdat/iagaformat.html
 """
+from __future__ import absolute_import
 
-from IAGA2002Factory import IAGA2002Factory
-from StreamIAGA2002Factory import StreamIAGA2002Factory
-from IAGA2002Parser import IAGA2002Parser
-from IAGA2002Writer import IAGA2002Writer
+from .IAGA2002Factory import IAGA2002Factory
+from .StreamIAGA2002Factory import StreamIAGA2002Factory
+from .IAGA2002Parser import IAGA2002Parser
+from .IAGA2002Writer import IAGA2002Writer
 
 
 __all__ = [
diff --git a/geomagio/imfv122/IMFV122Factory.py b/geomagio/imfv122/IMFV122Factory.py
index 667f124b33976c3ef67f9216c0f8ecc5398e2dcf..294058f019dca6408a28506f39e829874dd342c6 100644
--- a/geomagio/imfv122/IMFV122Factory.py
+++ b/geomagio/imfv122/IMFV122Factory.py
@@ -1,9 +1,10 @@
 """Factory that loads IMFV122 Files."""
+from __future__ import absolute_import
 
 import obspy.core
 from .. import ChannelConverter
 from ..TimeseriesFactory import TimeseriesFactory
-from IMFV122Parser import IMFV122Parser
+from .IMFV122Parser import IMFV122Parser
 
 
 class IMFV122Factory(TimeseriesFactory):
diff --git a/geomagio/imfv122/StreamIMFV122Factory.py b/geomagio/imfv122/StreamIMFV122Factory.py
index 4b60063d6177c2f8b36b6afcdc283976f16570d8..837082de3874a005da473cdbda8770b217c1a58d 100644
--- a/geomagio/imfv122/StreamIMFV122Factory.py
+++ b/geomagio/imfv122/StreamIMFV122Factory.py
@@ -1,6 +1,7 @@
 """Factory to load IMFV122 files from an input stream."""
+from __future__ import absolute_import
 
-from IMFV122Factory import IMFV122Factory
+from .IMFV122Factory import IMFV122Factory
 
 
 class StreamIMFV122Factory(IMFV122Factory):
diff --git a/geomagio/imfv122/__init__.py b/geomagio/imfv122/__init__.py
index 3b45ab11e20b9bd3cf25c2f2547ebd431a36644b..727ac7b80b561ea12022f0c84159d79d2b38b4a9 100644
--- a/geomagio/imfv122/__init__.py
+++ b/geomagio/imfv122/__init__.py
@@ -3,10 +3,11 @@
 Based on documentation at:
   http://www.intermagnet.org/data-donnee/formats/imfv122-eng.php
 """
+from __future__ import absolute_import
 
-from IMFV122Factory import IMFV122Factory
-from IMFV122Parser import IMFV122Parser
-from StreamIMFV122Factory import StreamIMFV122Factory
+from .IMFV122Factory import IMFV122Factory
+from .IMFV122Parser import IMFV122Parser
+from .StreamIMFV122Factory import StreamIMFV122Factory
 
 
 __all__ = [
diff --git a/geomagio/imfv283/GOESIMFV283Factory.py b/geomagio/imfv283/GOESIMFV283Factory.py
index 137f74cdc7eb3ec4a0292098336a82d79fe1d581..fc75ac42d612f3c667be2cd3dc75ed50cdb773c9 100644
--- a/geomagio/imfv283/GOESIMFV283Factory.py
+++ b/geomagio/imfv283/GOESIMFV283Factory.py
@@ -1,6 +1,7 @@
 """Factory to load IMFV283 files from an input StreamIMFV283Factory."""
+from __future__ import absolute_import
 
-from IMFV283Factory import IMFV283Factory
+from .IMFV283Factory import IMFV283Factory
 import subprocess
 import sys
 from obspy.core import Stream
diff --git a/geomagio/imfv283/IMFV283Factory.py b/geomagio/imfv283/IMFV283Factory.py
index effeec974e339b70074c5ae61f659e7e5fe4a75f..edd87fb0619815136f8d3bdc3b678f111698e2e6 100644
--- a/geomagio/imfv283/IMFV283Factory.py
+++ b/geomagio/imfv283/IMFV283Factory.py
@@ -1,9 +1,10 @@
 """Factory that loads IAGA2002 Files."""
+from __future__ import absolute_import
 
 import numpy
 from .. import ChannelConverter
 from ..TimeseriesFactory import TimeseriesFactory
-from IMFV283Parser import IMFV283Parser
+from .IMFV283Parser import IMFV283Parser
 from ..ObservatoryMetadata import ObservatoryMetadata
 
 
diff --git a/geomagio/imfv283/IMFV283Parser.py b/geomagio/imfv283/IMFV283Parser.py
index db709033657ba282889e0c3fb6bc259bba947d77..32e83acba295d42ab0bf4e5ad0cec51cf3aac700 100644
--- a/geomagio/imfv283/IMFV283Parser.py
+++ b/geomagio/imfv283/IMFV283Parser.py
@@ -1,11 +1,13 @@
 """Parsing methods for the IMFV283 Format."""
+from __future__ import absolute_import
+
 import math
 import numpy
 import sys
 import obspy
 from obspy.core import UTCDateTime
 
-import imfv283_codes
+from . import imfv283_codes
 
 # values that represent missing data points in IAGA2002
 DEAD_VALUE = 65535
diff --git a/geomagio/imfv283/StreamIMFV283Factory.py b/geomagio/imfv283/StreamIMFV283Factory.py
index d64b886385d1db2bf31105178871bbab3eb9351f..21f46eea951afe5624bf4779cd41c49d747f32a5 100644
--- a/geomagio/imfv283/StreamIMFV283Factory.py
+++ b/geomagio/imfv283/StreamIMFV283Factory.py
@@ -1,6 +1,7 @@
 """Factory to load IMFV283 files from an input StreamIMFV283Factory."""
+from __future__ import absolute_import
 
-from IMFV283Factory import IMFV283Factory
+from .IMFV283Factory import IMFV283Factory
 
 
 class StreamIMFV283Factory(IMFV283Factory):
diff --git a/geomagio/imfv283/__init__.py b/geomagio/imfv283/__init__.py
index d5d08ec631065c4f52674bcdeb03a6bfe678512c..8051ec49c633eef41dea0a052e88ece14a0f26b7 100644
--- a/geomagio/imfv283/__init__.py
+++ b/geomagio/imfv283/__init__.py
@@ -3,11 +3,12 @@
 Based on documentation at:
   http://http://www.intermagnet.org/data-donnee/formats/imfv283e-eng.php
 """
+from __future__ import absolute_import
 
-from GOESIMFV283Factory import GOESIMFV283Factory
-from IMFV283Factory import IMFV283Factory
-from StreamIMFV283Factory import StreamIMFV283Factory
-from IMFV283Parser import IMFV283Parser
+from .GOESIMFV283Factory import GOESIMFV283Factory
+from .IMFV283Factory import IMFV283Factory
+from .StreamIMFV283Factory import StreamIMFV283Factory
+from .IMFV283Parser import IMFV283Parser
 
 
 __all__ = [
diff --git a/geomagio/pcdcp/PCDCPFactory.py b/geomagio/pcdcp/PCDCPFactory.py
index 107d9bbe30c2600840d1d487459754c14b9e94d6..ad70d01ed5601abb290c7fb1039382ea09f37676 100644
--- a/geomagio/pcdcp/PCDCPFactory.py
+++ b/geomagio/pcdcp/PCDCPFactory.py
@@ -1,10 +1,11 @@
 """Factory that loads PCDCP Files."""
+from __future__ import absolute_import
 
 import obspy.core
 from .. import ChannelConverter
 from ..TimeseriesFactory import TimeseriesFactory
-from PCDCPParser import PCDCPParser
-from PCDCPWriter import PCDCPWriter
+from .PCDCPParser import PCDCPParser
+from .PCDCPWriter import PCDCPWriter
 
 
 # pattern for pcdcp file names
diff --git a/geomagio/pcdcp/PCDCPWriter.py b/geomagio/pcdcp/PCDCPWriter.py
index b8af9aeeed761a04faf9fd76dcaa08466697fa6e..02c78ccb346c68f35059ba2b170940bccba41783 100644
--- a/geomagio/pcdcp/PCDCPWriter.py
+++ b/geomagio/pcdcp/PCDCPWriter.py
@@ -1,7 +1,8 @@
+from __future__ import absolute_import
 
 import numpy
-import PCDCPParser
-from cStringIO import StringIO
+from . import PCDCPParser
+from io import StringIO
 from datetime import datetime
 from .. import ChannelConverter, TimeseriesUtility
 from ..TimeseriesFactoryException import TimeseriesFactoryException
diff --git a/geomagio/pcdcp/StreamPCDCPFactory.py b/geomagio/pcdcp/StreamPCDCPFactory.py
index 312e9361c85882a0f9bfe78e62c9481de99779b8..c3561ef4a66a63418806389a70b9dc01561e75ce 100644
--- a/geomagio/pcdcp/StreamPCDCPFactory.py
+++ b/geomagio/pcdcp/StreamPCDCPFactory.py
@@ -1,6 +1,7 @@
 """Factory to load PCDCP files from an input StreamPCDCPFactory."""
+from __future__ import absolute_import
 
-from PCDCPFactory import PCDCPFactory
+from .PCDCPFactory import PCDCPFactory
 
 
 class StreamPCDCPFactory(PCDCPFactory):
diff --git a/geomagio/pcdcp/__init__.py b/geomagio/pcdcp/__init__.py
index c6759a39b9b4613e231a821455905320ec1735b4..ef16c3ab6487bf9c41d3b9be4613e89f74def868 100644
--- a/geomagio/pcdcp/__init__.py
+++ b/geomagio/pcdcp/__init__.py
@@ -1,10 +1,11 @@
 """IO Module for PCDCP Format
 """
+from __future__ import absolute_import
 
-from PCDCPFactory import PCDCPFactory
-from StreamPCDCPFactory import StreamPCDCPFactory
-from PCDCPParser import PCDCPParser
-from PCDCPWriter import PCDCPWriter
+from .PCDCPFactory import PCDCPFactory
+from .StreamPCDCPFactory import StreamPCDCPFactory
+from .PCDCPParser import PCDCPParser
+from .PCDCPWriter import PCDCPWriter
 
 
 __all__ = [
diff --git a/geomagio/temperature/StreamTEMPFactory.py b/geomagio/temperature/StreamTEMPFactory.py
index 58d4b7dcad03dcbacbf86861dcd12d3da9779aad..4607d8c416d7110e11b484e86e6a7824167772ab 100644
--- a/geomagio/temperature/StreamTEMPFactory.py
+++ b/geomagio/temperature/StreamTEMPFactory.py
@@ -1,6 +1,7 @@
 """Factory to load temp/volt files from an input StreamTEMPFactory."""
+from __future__ import absolute_import
 
-from TEMPFactory import TEMPFactory
+from .TEMPFactory import TEMPFactory
 
 
 class StreamTEMPFactory(TEMPFactory):
diff --git a/geomagio/temperature/TEMPFactory.py b/geomagio/temperature/TEMPFactory.py
index 515e93d19f8ce4250a325ab859575ee608ef45ce..c0403a985f06d52c64a99e34ab2ffd5b3386487e 100644
--- a/geomagio/temperature/TEMPFactory.py
+++ b/geomagio/temperature/TEMPFactory.py
@@ -1,7 +1,8 @@
 """Factory that loads temp/volt Files."""
+from __future__ import absolute_import
 
 from ..TimeseriesFactory import TimeseriesFactory
-from TEMPWriter import TEMPWriter
+from .TEMPWriter import TEMPWriter
 
 
 # pattern for temp file names
diff --git a/geomagio/temperature/TEMPWriter.py b/geomagio/temperature/TEMPWriter.py
index 5df1b252a7e9bfbfd5d5bb184892711e96a1026d..f29cbedd9f2216705910182d402d3ade57978e4c 100644
--- a/geomagio/temperature/TEMPWriter.py
+++ b/geomagio/temperature/TEMPWriter.py
@@ -1,6 +1,6 @@
 
 import numpy
-from cStringIO import StringIO
+from io import StringIO
 from datetime import datetime
 from .. import TimeseriesUtility
 from ..TimeseriesFactoryException import TimeseriesFactoryException
diff --git a/geomagio/temperature/__init__.py b/geomagio/temperature/__init__.py
index 81046e6acc8201f3fde0fb30a132506636722c2e..c5769f5da4de5e5da6f680c7903f0ce0d4051c01 100644
--- a/geomagio/temperature/__init__.py
+++ b/geomagio/temperature/__init__.py
@@ -1,9 +1,10 @@
 """IO Module for TEMP Format
 """
+from __future__ import absolute_import
 
-from TEMPFactory import TEMPFactory
-from StreamTEMPFactory import StreamTEMPFactory
-from TEMPWriter import TEMPWriter
+from .TEMPFactory import TEMPFactory
+from .StreamTEMPFactory import StreamTEMPFactory
+from .TEMPWriter import TEMPWriter
 
 
 __all__ = [
diff --git a/geomagio/vbf/StreamVBFFactory.py b/geomagio/vbf/StreamVBFFactory.py
index 100150b6e98383d77d003e07d33cd1b4c7fb9aba..ad02e5ced80b04666d71fb88c0fc0772b25a3ead 100644
--- a/geomagio/vbf/StreamVBFFactory.py
+++ b/geomagio/vbf/StreamVBFFactory.py
@@ -1,6 +1,7 @@
 """Factory to load VBF files from an input StreamVBFFactory."""
+from __future__ import absolute_import
 
-from VBFFactory import VBFFactory
+from .VBFFactory import VBFFactory
 
 
 class StreamVBFFactory(VBFFactory):
diff --git a/geomagio/vbf/VBFFactory.py b/geomagio/vbf/VBFFactory.py
index 4c4d821eaf0426d12394e0c45f33eee818d2b237..d708a354086c6ebd39e99580f1192142e956db91 100644
--- a/geomagio/vbf/VBFFactory.py
+++ b/geomagio/vbf/VBFFactory.py
@@ -1,7 +1,8 @@
 """Factory that loads VBF Files."""
+from __future__ import absolute_import
 
 from ..TimeseriesFactory import TimeseriesFactory
-from VBFWriter import VBFWriter
+from .VBFWriter import VBFWriter
 
 
 # pattern for vbf file names
diff --git a/geomagio/vbf/VBFWriter.py b/geomagio/vbf/VBFWriter.py
index 45d9cc2786fbefb75efa2f8d13a92b8f28648833..b7751b9a3790751cab28bc78d3229eb5f3053c13 100644
--- a/geomagio/vbf/VBFWriter.py
+++ b/geomagio/vbf/VBFWriter.py
@@ -1,6 +1,6 @@
 
 import numpy
-from cStringIO import StringIO
+from io import StringIO
 from datetime import datetime
 from .. import ChannelConverter, TimeseriesUtility
 from ..TimeseriesFactoryException import TimeseriesFactoryException
diff --git a/geomagio/vbf/__init__.py b/geomagio/vbf/__init__.py
index 13d26cbef4a01539e82dae3116435ad983b878f8..59fc79065b088da79353c7e0beb0257fcda43985 100644
--- a/geomagio/vbf/__init__.py
+++ b/geomagio/vbf/__init__.py
@@ -1,9 +1,10 @@
 """IO Module for VBF Format
 """
+from __future__ import absolute_import
 
-from VBFFactory import VBFFactory
-from StreamVBFFactory import StreamVBFFactory
-from VBFWriter import VBFWriter
+from .VBFFactory import VBFFactory
+from .StreamVBFFactory import StreamVBFFactory
+from .VBFWriter import VBFWriter
 
 
 __all__ = [