diff --git a/.travis.yml b/.travis.yml
index e88eb34af0fa29b4d6b4e172d30ab3885c56fa64..a0298bde9b969ef8e508396624b2b393e7b44811 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,7 @@ sudo: false
 language: python
 python:
     - "2.7"
+    - "3.4"
 notifications:
     email: false
 addons:
@@ -17,7 +18,11 @@ env:
     - CC=gcc-4.8 CXX=g++-4.8
     - CC=gcc-4.9 CXX=g++-4.9
 before_install:
-  - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh
+  - if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then
+      wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -O miniconda.sh;
+    else
+      wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
+    fi
   - bash miniconda.sh -b -p $HOME/miniconda
   - export PATH="$HOME/miniconda/bin:$PATH"
   - conda update --yes conda
diff --git a/examples/svi.py b/examples/svi.py
index 2547ae513ee6f5986a8269f37b8628ab1943061a..cf22c509f9f4e983f830e13bb2a59d7044d20ea5 100644
--- a/examples/svi.py
+++ b/examples/svi.py
@@ -1,4 +1,4 @@
-
+from __future__ import division
 import numpy as np
 from numpy import newaxis as na
 from matplotlib import pyplot as plt
diff --git a/pyhsmm/internals/initial_state.py b/pyhsmm/internals/initial_state.py
index c0514a6c91fac3797ea884f0c5b19b5c114434d2..ca0bba831109b7aee47ae5cd4a0c6065eef8dba2 100644
--- a/pyhsmm/internals/initial_state.py
+++ b/pyhsmm/internals/initial_state.py
@@ -1,5 +1,6 @@
 from __future__ import division
 import numpy as np
+import copy
 
 import pyhsmm
 from pyhsmm.util.general import top_eigenvector
@@ -41,6 +42,11 @@ class UniformInitialState(object):
     def clear_caches(self):
         pass
 
+    def copy_sample(self, new_model):
+        new = copy.copy(self)
+        new.model = new_model
+        return new
+
 class HMMInitialState(Categorical):
     def __init__(self,model,init_state_concentration=None,pi_0=None):
         self.model = model
@@ -73,7 +79,6 @@ class HMMInitialState(Categorical):
     def clear_caches(self):
         pass
 
-
     def meanfieldupdate(self,expected_initial_states_list):
         super(HMMInitialState,self).meanfieldupdate(None,expected_initial_states_list)
 
@@ -85,6 +90,10 @@ class HMMInitialState(Categorical):
         super(HMMInitialState,self).max_likelihood(
                 data=samples,weights=expected_states_list)
 
+    def copy_sample(self, new_model):
+        new = copy.deepcopy(self)
+        new.model = new_model
+        return new
 
 class StartInZero(GibbsSampling,MaxLikelihood):
     def __init__(self,num_states,**kwargs):
@@ -100,6 +109,11 @@ class StartInZero(GibbsSampling,MaxLikelihood):
     def max_likelihood(*args,**kwargs):
         pass
 
+    def copy_sample(self, new_model):
+        new = copy.copy(self)
+        new.model = new_model
+        return new
+
 class HSMMInitialState(HMMInitialState):
     @property
     def steady_state_distribution(self):
@@ -112,4 +126,3 @@ class HSMMInitialState(HMMInitialState):
 
     def clear_caches(self):
         self._steady_state_distribution = None
-
diff --git a/pyhsmm/models.py b/pyhsmm/models.py
index 3a19ef47011792e4ff32618d47396da22ba5829f..ee98bbe7bab27c5b613b44082ee59f775fd960d8 100644
--- a/pyhsmm/models.py
+++ b/pyhsmm/models.py
@@ -387,7 +387,6 @@ class _HMMBase(Model):
 
     def _plot_stateseq_pcolor(self,s,ax=None,state_colors=None,
             plot_slice=slice(None),update=False,color_method=None):
-        # TODO pcolormesh instead of pcolorfast?
         from pyhsmm.util.general import rle
 
         s = self.states_list[s] if isinstance(s,int) else s
@@ -407,7 +406,7 @@ class _HMMBase(Model):
         x, y = np.hstack((0,durations.cumsum())), np.array([datamin,datamax])
         C = np.atleast_2d([state_colors[state] for state in stateseq_norep])
 
-        s._pcolor_im = ax.pcolorfast(x,y,C,vmin=0,vmax=1,alpha=0.3)
+        s._pcolor_im = ax.pcolormesh(x,y,C,vmin=0,vmax=1,alpha=0.3)
         ax.set_ylim((datamin,datamax))
         ax.set_xlim((0,len(stateseq)))
         ax.set_yticks([])
@@ -473,7 +472,7 @@ class _HMMGibbsSampling(_HMMBase,ModelGibbsSampling):
         new = copy.copy(self)
         new.obs_distns = [o.copy_sample() for o in self.obs_distns]
         new.trans_distn = self.trans_distn.copy_sample()
-        new.init_state_distn = self.init_state_distn.copy_sample()
+        new.init_state_distn = self.init_state_distn.copy_sample(new)
         new.states_list = [s.copy_sample(new) for s in self.states_list]
         return new
 
diff --git a/setup.py b/setup.py
index 3673c6368ba38f42fefe32f8d5216762477e5127..b6afa30b352461679b054703fbc0d02c6961a61f 100644
--- a/setup.py
+++ b/setup.py
@@ -8,10 +8,13 @@ from warnings import warn
 import os
 import sys
 from glob import glob
-from future.moves.urllib.request import urlretrieve
 import tarfile
 import shutil
 
+from future.standard_library import install_aliases
+install_aliases()
+from urllib.request import urlretrieve
+
 # use cython if we can import it successfully
 try:
     from Cython.Distutils import build_ext as _build_ext