diff --git a/pyhsmm/models.py b/pyhsmm/models.py
index 9e10134b788bccddfc5e9af009db4e41b3c6f04e..2ae260525071aac3608366b14431fc3ca487b45a 100644
--- a/pyhsmm/models.py
+++ b/pyhsmm/models.py
@@ -1220,13 +1220,14 @@ class WeakLimitHDPHSMMTruncatedIntNegBin(_WeakLimitHDPMixin,HSMMIntNegBin):
 class _SeparateTransMixin(object):
     def __init__(self,*args,**kwargs):
         super(_SeparateTransMixin,self).__init__(*args,**kwargs)
-        self.trans_distns = collections.defaultdict(
-                lambda: copy.deepcopy(self.trans_distn))
-        self.init_state_distns = collections.defaultdict(
-                lambda: copy.deepcopy(self.init_state_distn))
+
+        make_factory = (lambda distn: lambda: copy.deepcopy(distn))
+
+        self.trans_distns = collections.defaultdict(make_factory(self.trans_distn))
         self._trans_distn_prototype = self.trans_distn
         del self.trans_distn
 
+        self.init_state_distns = collections.defaultdict(make_factory(self.init_state_distn))
         self._init_state_distn_prototype = self.init_state_distn
         del self.init_state_distn
 
diff --git a/setup.py b/setup.py
index eb43d2359eb30271759ce8beb42bd28e0cc5626c..80008761c0a15c264b460e5dd61f6d99589dc380 100644
--- a/setup.py
+++ b/setup.py
@@ -8,7 +8,7 @@ from warnings import warn
 import os
 import sys
 from glob import glob
-from urllib import urlretrieve
+from six.moves.urllib.request import urlretrieve
 import tarfile
 import shutil
 
@@ -98,7 +98,7 @@ if use_cython:
 
 # put it all together with a call to setup()
 setup(name='pyhsmm',
-      version='0.1.5',
+      version='0.1.6',
       description="Bayesian inference in HSMMs and HMMs",
       author='Matthew James Johnson',
       author_email='mattjj@csail.mit.edu',