diff --git a/lib/kim/Install.py b/lib/kim/Install.py
index 315bb4e11c47cd41ec28935255fa9e76c9bedbc2..f7ddcfda967ae0f7ae0b95fd5efd928e8416c8ba 100644
--- a/lib/kim/Install.py
+++ b/lib/kim/Install.py
@@ -12,7 +12,7 @@ try:
   except: from urllib import urlretrieve as geturl
 except:
   def geturl(url,fname):
-    cmd = "curl -o %s %s" % (fname,url)
+    cmd = 'curl -L -o "%s" %s' % (fname,url)
     txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
     return txt
 
@@ -139,7 +139,7 @@ if buildflag:
 
   if os.path.isdir(kimdir):
     print("kim-api is already installed at %s.\nRemoving it for re-install" % kimdir)
-    cmd = "rm -rf %s" % kimdir
+    cmd = 'rm -rf "%s"' % kimdir
     subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
 
   # configure LAMMPS to use kim-api to be installed
@@ -160,48 +160,48 @@ if buildflag:
   print("Downloading kim-api tarball ...")
   geturl(url,"%s/%s.tgz" % (thisdir,version))
   print("Unpacking kim-api tarball ...")
-  cmd = "cd %s; rm -rf %s; tar zxvf %s.tgz" % (thisdir,version,version)
+  cmd = 'cd "%s"; rm -rf "%s"; tar -xzvf %s.tgz' % (thisdir,version,version)
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
 
   # configure kim-api
 
   print("Configuring kim-api ...")
-  cmd = "cd %s/%s; ./configure --prefix='%s'" % (thisdir,version,kimdir)
+  cmd = 'cd "%s/%s"; ./configure --prefix="%s"' % (thisdir,version,kimdir)
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
 
   # build kim-api
 
   print("Configuring example Models")
-  cmd = "cd %s/%s; make add-examples" % (thisdir,version)
+  cmd = 'cd "%s/%s"; make add-examples' % (thisdir,version)
   txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
   if verboseflag: print (txt.decode("UTF-8"))
 
   if everythingflag:
     print("Configuring all OpenKIM models, this will take a while ...")
-    cmd = "cd %s/%s; make add-OpenKIM" % (thisdir,version)
+    cmd = 'cd "%s/%s"; make add-OpenKIM' % (thisdir,version)
     txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
     if verboseflag: print(txt.decode("UTF-8"))
 
   print("Building kim-api ...")
-  cmd = "cd %s/%s; make" % (thisdir,version)
+  cmd = 'cd "%s/%s"; make' % (thisdir,version)
   txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
   if verboseflag: print(txt.decode("UTF-8"))
 
   # install kim-api
 
   print("Installing kim-api ...")
-  cmd = "cd %s/%s; make install" % (thisdir,version)
+  cmd = 'cd "%s/%s"; make install' % (thisdir,version)
   txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
   if verboseflag: print(txt.decode("UTF-8"))
 
-  cmd = "cd %s/%s; make install-set-default-to-v1" %(thisdir,version)
+  cmd = 'cd "%s/%s"; make install-set-default-to-v1' %(thisdir,version)
   txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
   if verboseflag: print(txt.decode("UTF-8"))
 
   # remove source files
 
   print("Removing kim-api source and build files ...")
-  cmd = "cd %s; rm -rf %s; rm -rf %s.tgz" % (thisdir,version,version)
+  cmd = 'cd "%s"; rm -rf %s; rm -rf %s.tgz' % (thisdir,version,version)
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
 
 # add a single model (and possibly its driver) to existing KIM installation
@@ -219,11 +219,11 @@ if addflag:
   geturl(url,"%s/%s.tgz" % (thisdir,addmodelname))
 
   print("Unpacking item tarball ...")
-  cmd = "cd %s; tar zxvf %s.tgz" % (thisdir,addmodelname)
+  cmd = 'cd "%s"; tar -xzvf %s.tgz' % (thisdir,addmodelname)
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
 
   print("Building item ...")
-  cmd = "cd %s/%s; make; make install" %(thisdir,addmodelname)
+  cmd = 'cd "%s/%s"; make; make install' %(thisdir,addmodelname)
   try:
     txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
   except subprocess.CalledProcessError as e:
@@ -231,18 +231,18 @@ if addflag:
     # Error: but first, check to see if it needs a driver
     firstRunOutput = e.output.decode("UTF-8")
 
-    cmd = "cd %s/%s; make kim-item-type" % (thisdir,addmodelname)
+    cmd = 'cd "%s/%s"; make kim-item-type' % (thisdir,addmodelname)
     txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
     txt = txt.decode("UTF-8")
     if txt == "ParameterizedModel":
 
       # Get and install driver
 
-      cmd = "cd %s/%s; make model-driver-name" % (thisdir,addmodelname)
+      cmd = 'cd "%s/%s"; make model-driver-name' % (thisdir,addmodelname)
       txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
       adddrivername = txt.decode("UTF-8").strip()
       print("First installing model driver: %s..." % adddrivername)
-      cmd = "cd %s; python Install.py -n -a %s" % (thisdir,adddrivername)
+      cmd = 'cd "%s"; python Install.py -n -a %s' % (thisdir,adddrivername)
       try:
         txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
       except subprocess.CalledProcessError as e:
@@ -254,7 +254,7 @@ if addflag:
       # now install the model that needed the driver
 
       print("Now installing model : %s" % addmodelname)
-      cmd = "cd %s; python Install.py -n -a %s" % (thisdir,addmodelname)
+      cmd = 'cd "%s"; python Install.py -n -a %s' % (thisdir,addmodelname)
       try:
         txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
       except subprocess.CalledProcessError as e:
@@ -272,5 +272,5 @@ if addflag:
 
   if verboseflag: print(txt.decode("UTF-8"))
   print("Removing kim item source and build files ...")
-  cmd = "cd %s; rm -rf %s; rm -rf %s.tgz" %(thisdir,addmodelname,addmodelname)
+  cmd = 'cd "%s"; rm -rf %s; rm -rf %s.tgz' %(thisdir,addmodelname,addmodelname)
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
diff --git a/lib/mscg/.gitignore b/lib/mscg/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..7d45bcb60a974bad8d29a88e15e04c41de049451
--- /dev/null
+++ b/lib/mscg/.gitignore
@@ -0,0 +1,4 @@
+# files to ignore
+/liblink
+/includelink
+/MSCG-release-master
diff --git a/lib/mscg/Install.py b/lib/mscg/Install.py
index 7b10be189fee9b5c60fb84d318dcf388fb510926..db86b0a7a632e782ac4ccdd115196d98665ab166 100644
--- a/lib/mscg/Install.py
+++ b/lib/mscg/Install.py
@@ -3,127 +3,133 @@
 # Install.py tool to download, unpack, build, and link to the MS-CG library
 # used to automate the steps described in the README file in this dir
 
-import sys,os,re,commands
+from __future__ import print_function
+import sys,os,re,subprocess
+
+try:
+  import ssl
+  try: from urllib.request import urlretrieve as geturl
+  except: from urllib import urlretrieve as geturl
+except:
+  def geturl(url,fname):
+    cmd = 'curl -L -o "%s" %s' % (fname,url)
+    txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
+    return txt
 
 # help message
 
 help = """
-Syntax from src dir: make lib-mscg args="-h hpath hdir -g -b [suffix] -l"
-Syntax from lib dir: python Install.py -h hpath hdir -g -b [suffix] -l
+Syntax from src dir: make lib-mscg args="-p [path] -m [suffix]"
+Syntax from lib dir: python Install.py -p [path]  -m [suffix]
 
 specify one or more options, order does not matter
 
-  -h = set home dir of MS-CG to be hpath/hdir
-       hpath can be full path, contain '~' or '.' chars
-       default hpath = . = lib/mscg
-       default hdir = MSCG-release-master = what GitHub zipfile unpacks to
-  -g = grab (download) zipfile from MS-CG GitHub website
-       unpack it to hpath/hdir
-       hpath must already exist
-       if hdir already exists, it will be deleted before unpack
-  -b = build MS-CG library in its src dir
-       optional suffix specifies which src/Make/Makefile.suffix to use
+  -b = download and build MS-CG library (default)
+  -p = specify folder of existing MS-CG installation
+  -m = machine suffix specifies which src/Make/Makefile.suffix to use
        default suffix = g++_simple
-  -l = create 2 softlinks (includelink,liblink) in lib/mscg to MS-CG src dir
 
 Example:
 
-make lib-mscg args="-g -b -l"   # download/build in lib/mscg/MSCG-release-master
+make lib-mscg args="-b "   # download/build in lib/mscg/MSCG-release-master
 """
 
 # settings
 
-url = "https://github.com/uchicago-voth/MSCG-release/archive/master.zip"
-zipfile = "MS-CG-master.zip"
-zipdir = "MSCG-release-master"
+url = "http://github.com/uchicago-voth/MSCG-release/archive/master.tar.gz"
+tarfile = "MS-CG-master.tar.gz"
+tardir = "MSCG-release-master"
 
 # print error message or help
 
 def error(str=None):
-  if not str: print help
-  else: print "ERROR",str
+  if not str: print(help)
+  else: print("ERROR",str)
   sys.exit()
 
 # expand to full path name
 # process leading '~' or relative path
-  
+
 def fullpath(path):
   return os.path.abspath(os.path.expanduser(path))
-  
+
 # parse args
 
 args = sys.argv[1:]
 nargs = len(args)
-if nargs == 0: error()
 
 homepath = "."
-homedir = zipdir
+homedir = tardir
 
-grabflag = 0
-buildflag = 0
+buildflag = True
+pathflag = False
+linkflag = True
 msuffix = "g++_simple"
-linkflag = 0
 
 iarg = 0
 while iarg < nargs:
-  if args[iarg] == "-h":
-    if iarg+3 > nargs: error()
-    homepath = args[iarg+1]
-    homedir = args[iarg+2]
-    iarg += 3
-  elif args[iarg] == "-g":
-    grabflag = 1
-    iarg += 1
+  if args[iarg] == "-p":
+    if iarg+2 > nargs: error()
+    mscgpath = fullpath(args[iarg+1])
+    pathflag = True
+    buildflag = False
+    iarg += 2
+  elif args[iarg] == "-m":
+    if iarg+2 > nargs: error()
+    msuffix = args[iarg+1]
+    iarg += 2
   elif args[iarg] == "-b":
-    buildflag = 1
-    if iarg+1 < nargs and args[iarg+1][0] != '-':
-      msuffix = args[iarg+1]
-      iarg += 1
-    iarg += 1
-  elif args[iarg] == "-l":
-    linkflag = 1
+    buildflag = True
     iarg += 1
   else: error()
 
 homepath = fullpath(homepath)
-if not os.path.isdir(homepath): error("MS-CG path does not exist")
 homedir = "%s/%s" % (homepath,homedir)
 
-# download and unpack MS-CG zipfile
+if (pathflag):
+    if not os.path.isdir(mscgpath): error("MS-CG path does not exist")
+    homedir = mscgpath
+
+if (buildflag and pathflag):
+    error("Cannot use -b and -p flag at the same time")
 
-if grabflag:
-  print "Downloading MS-CG ..."
-  cmd = "curl -L %s > %s/%s" % (url,homepath,zipfile)
-  print cmd
-  print commands.getoutput(cmd)
+# download and unpack MS-CG tarfile
 
-  print "Unpacking MS-CG zipfile ..."
-  if os.path.exists("%s/%s" % (homepath,zipdir)):
-    commands.getoutput("rm -rf %s/%s" % (homepath,zipdir))
-  cmd = "cd %s; unzip %s" % (homepath,zipfile)
-  commands.getoutput(cmd)
-  if os.path.basename(homedir) != zipdir:
-    if os.path.exists(homedir): commands.getoutput("rm -rf %s" % homedir)
-    os.rename("%s/%s" % (homepath,zipdir),homedir)
+if buildflag:
+  print("Downloading MS-CG ...")
+  geturl(url,"%s/%s" % (homepath,tarfile))
+
+  print("Unpacking MS-CG tarfile ...")
+  if os.path.exists("%s/%s" % (homepath,tardir)):
+    cmd = 'rm -rf "%s/%s"' % (homepath,tardir)
+    subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
+  cmd = 'cd "%s"; tar -xzvf %s' % (homepath,tarfile)
+  subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
+  os.remove("%s/%s" % (homepath,tarfile))
+  if os.path.basename(homedir) != tardir:
+    if os.path.exists(homedir):
+      cmd = 'rm -rf "%s"' % homedir
+      subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
+    os.rename("%s/%s" % (homepath,tardir),homedir)
 
 # build MS-CG
 
 if buildflag:
-  print "Building MS-CG ..."
-  cmd = "cd %s/src; cp Make/Makefile.%s .; make -f Makefile.%s" % \
+  print("Building MS-CG ...")
+  cmd = 'cd "%s/src"; cp Make/Makefile.%s .; make -f Makefile.%s' % \
       (homedir,msuffix,msuffix)
-  txt = commands.getoutput(cmd)
-  print txt
+  txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
+  print(txt.decode('UTF-8'))
 
 # create 2 links in lib/mscg to MS-CG src dir
 
 if linkflag:
-  print "Creating links to MS-CG include and lib files"
+  print("Creating links to MS-CG include and lib files")
   if os.path.isfile("includelink") or os.path.islink("includelink"):
     os.remove("includelink")
   if os.path.isfile("liblink") or os.path.islink("liblink"):
     os.remove("liblink")
-  cmd = "ln -s %s/src includelink" % homedir
-  commands.getoutput(cmd)
-  cmd = "ln -s %s/src liblink" % homedir
-  commands.getoutput(cmd)
+  cmd = 'ln -s "%s/src" includelink' % homedir
+  subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
+  cmd = 'ln -s "%s/src" liblink' % homedir
+  subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
diff --git a/lib/poems/Makefile.g++ b/lib/poems/Makefile.g++
index 54c897a22ccf976adcfd24220e6648fe26e86dc0..afcbc4a01df37268840643042ba6cb7921151c40 100644
--- a/lib/poems/Makefile.g++
+++ b/lib/poems/Makefile.g++
@@ -68,7 +68,7 @@ OBJ =   $(SRC:.cpp=.o)
 # ------ SETTINGS ------
 
 CC =	        g++
-CCFLAGS =       -O -g -fPIC -Wall #-Wno-deprecated
+CCFLAGS =       -O3 -g -fPIC -Wall #-Wno-deprecated
 ARCHIVE =	ar
 ARCHFLAG =	-rc
 DEPFLAGS =      -M
diff --git a/lib/poems/Makefile.mingw32-cross b/lib/poems/Makefile.mingw32-cross
deleted file mode 100644
index 17e81b51f0f1836c4b4a910fca09a8381b4a459d..0000000000000000000000000000000000000000
--- a/lib/poems/Makefile.mingw32-cross
+++ /dev/null
@@ -1,110 +0,0 @@
-# *
-# *_________________________________________________________________________*
-# *      POEMS: PARALLELIZABLE OPEN SOURCE EFFICIENT MULTIBODY SOFTWARE     *
-# *      DESCRIPTION: SEE READ-ME                                           *
-# *      FILE NAME: Makefile                                                *
-# *      AUTHORS: See Author List                                           * 
-# *      GRANTS: See Grants List                                            *
-# *      COPYRIGHT: (C) 2005 by Authors as listed in Author's List          *
-# *      LICENSE: Please see License Agreement                              *
-# *      DOWNLOAD: Free at www.rpi.edu/~anderk5                             *
-# *      ADMINISTRATOR: Prof. Kurt Anderson                                 *
-# *                     Computational Dynamics Lab                          *
-# *                     Rensselaer Polytechnic Institute                    *
-# *                     110 8th St. Troy NY 12180                           * 
-# *      CONTACT:        anderk5@rpi.edu                                    *
-# *_________________________________________________________________________*/
-
-SHELL = /bin/sh
-
-# which file will be copied to Makefile.lammps
-
-EXTRAMAKE = Makefile.lammps.empty
-
-# ------ FILES ------
-
-SRC_MAIN = workspace.cpp system.cpp poemsobject.cpp 
-INC_MAIN = workspace.h system.h poemsobject.h
-
-SRC_BODY =      body.cpp rigidbody.cpp particle.cpp inertialframe.cpp
-INC_BODY =      bodies.h body.h rigidbody.h particle.h inertialframe.h
-
-
-SRC_JOINT =     joint.cpp revolutejoint.cpp prismaticjoint.cpp sphericaljoint.cpp \
-    freebodyjoint.cpp body23joint.cpp mixedjoint.cpp
-INC_JOINT =     joints.h joint.h revolutejoint.h prismaticjoint.h sphericaljoint.h \
-    freebodyjoint.h body23joint.h mixedjoint.h
-
-SRC_POINT =     point.cpp fixedpoint.cpp
-INC_POINT =     points.h point.h fixedpoint.h
-
-SRC_SOLVE = solver.cpp  
-INC_SOLVE = solver.h  
-
-SRC_ORDERN = onsolver.cpp onfunctions.cpp onbody.cpp
-INC_ORDERN = onsolver.h onfunctions.h onbody.h
-
-SRC_MAT =       virtualmatrix.cpp matrix.cpp matrixfun.cpp mat3x3.cpp virtualcolmatrix.cpp \
-    colmatrix.cpp vect3.cpp virtualrowmatrix.cpp rowmatrix.cpp mat6x6.cpp vect6.cpp \
-    fastmatrixops.cpp colmatmap.cpp eulerparameters.cpp vect4.cpp norm.cpp mat4x4.cpp \
-    
-INC_MAT =       matrices.h virtualmatrix.h matrix.h matrixfun.h mat3x3.h virtualcolmatrix.h \
-    colmatrix.h vect3.h virtualrowmatrix.h rowmatrix.h mat6x6.h vect6.h \
-    fastmatrixops.h colmatmap.h eulerparameters.h vect4.h norm.h mat4x4.h 
-
-SRC_MISC = poemstreenode.cpp
-INC_MISC = poemslist.h poemstreenode.h poemstree.h poemsnodelib.h SystemProcessor.h defines.h POEMSChain.h
-
-SRC = $(SRC_MAIN) $(SRC_BODY) $(SRC_JOINT) $(SRC_POINT) $(SRC_SOLVE) $(SRC_ORDERN) $(SRC_MAT) $(SRC_MISC) 
-INC = $(INC_MAIN) $(INC_BODY) $(INC_JOINT) $(INC_POINT) $(INC_SOLVE) $(INC_ORDERN) $(INC_MAT) $(INC_MISC) 
-
-FILES = $(SRC) $(INC) Makefile Authors_List.txt Grants_List.txt POEMS_License.txt README Copyright_Notice
-
-# ------ DEFINITIONS ------
-
-DIR = Obj_mingw32/
-LIB = $(DIR)libpoems.a
-OBJ = $(SRC:%.cpp=$(DIR)%.o)
-
-# ------ SETTINGS ------
-
-CC =	        i686-w64-mingw32-g++
-CCFLAGS =	-O2 -march=i686 -mtune=generic -mfpmath=387 -mpc64	\
-		-ffast-math -funroll-loops -finline-functions -fno-rtti	\
-		-fno-exceptions -fstrict-aliasing \
-		-Wall -W -Wno-uninitialized 
-ARCHIVE =	i686-w64-mingw32-ar
-ARCHFLAG =	-rcs
-DEPFLAGS =      -M
-LINK =         	i686-w64-mingw32-g++
-LINKFLAGS =	-O
-USRLIB =
-SYSLIB =
-
-# ------ MAKE PROCEDURE ------
-
-default: $(DIR) $(LIB)
-
-$(DIR):
-	-mkdir $(DIR)
-
-$(LIB): $(OBJ)
-	$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
-	@cp $(EXTRAMAKE) Makefile.lammps
-
-# ------ COMPILE RULES ------
-
-$(DIR)%.o:%.cpp
-	$(CC) $(CCFLAGS) -c $< -o $@
-
-# ------ DEPENDENCIES ------
-
-include .depend
-
-# ------ CLEAN ------
-
-clean:
-	-rm $(DIR)*.o $(DIR)*.d *~ $(LIB)
-
-tar:
-	-tar -cvf ../POEMS.tar $(FILES)
diff --git a/lib/poems/Makefile.mingw32-cross-mpi b/lib/poems/Makefile.mingw32-cross-mpi
deleted file mode 100644
index 1e35c5b46151a9c380a87c3a501bb6a758d2d4eb..0000000000000000000000000000000000000000
--- a/lib/poems/Makefile.mingw32-cross-mpi
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*- wrapper for non-MPI libraries
-
-SHELL=/bin/sh
-
-all:
-	$(MAKE) $(MFLAGS) mingw32-cross
-	-rm -f Obj_mingw32-mpi
-	ln -s Obj_mingw32 Obj_mingw32-mpi
-
-clean:
-	$(MAKE) $(MFLAGS) clean-mingw32-cross
-	-rm -f Obj_mingw32-mpi
-
diff --git a/lib/poems/Makefile.mingw64-cross-mpi b/lib/poems/Makefile.mingw64-cross-mpi
deleted file mode 100644
index ca6f4a6d43226f15bcf0e0a431b20528cfc7ff4b..0000000000000000000000000000000000000000
--- a/lib/poems/Makefile.mingw64-cross-mpi
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- makefile -*- wrapper for non-MPI libraries
-
-SHELL=/bin/sh
-
-all:
-	$(MAKE) $(MFLAGS) mingw64-cross
-	-rm -f Obj_mingw64-mpi
-	ln -s Obj_mingw64 Obj_mingw64-mpi
-
-clean:
-	$(MAKE) $(MFLAGS) clean-mingw64-cross
-	-rm -f Obj_mingw64-mpi
-
diff --git a/lib/poems/Makefile.mingw64-cross b/lib/poems/Makefile.mpi
similarity index 86%
rename from lib/poems/Makefile.mingw64-cross
rename to lib/poems/Makefile.mpi
index 2df43dea947724307d9bac6652c81f2c7823ffba..0f0546419c7215f1c0f060874945317e266d0561 100644
--- a/lib/poems/Makefile.mingw64-cross
+++ b/lib/poems/Makefile.mpi
@@ -62,40 +62,31 @@ FILES = $(SRC) $(INC) Makefile Authors_List.txt Grants_List.txt POEMS_License.tx
 
 # ------ DEFINITIONS ------
 
-DIR = Obj_mingw64/
-LIB = $(DIR)libpoems.a
-OBJ = $(SRC:%.cpp=$(DIR)%.o)
+LIB = libpoems.a
+OBJ =   $(SRC:.cpp=.o)
 
 # ------ SETTINGS ------
 
-CC =	        x86_64-w64-mingw32-g++
-CCFLAGS =	-O2 -march=core2 -mtune=core2 -msse2 -mpc64	\
-		-ffast-math -funroll-loops -finline-functions -fno-rtti	\
-		-fno-exceptions -fstrict-aliasing \
-		-Wall -W -Wno-uninitialized 
-ARCHIVE =	x86_64-w64-mingw32-ar
-ARCHFLAG =	-rcs
+CC =	        mpicxx
+CCFLAGS =       -O3 -g -fPIC -Wall #-Wno-deprecated
+ARCHIVE =	ar
+ARCHFLAG =	-rc
 DEPFLAGS =      -M
-LINK =         	x86_64-w64-mingw32-g++
+LINK =         	mpicxx
 LINKFLAGS =	-O
 USRLIB =
 SYSLIB =
 
 # ------ MAKE PROCEDURE ------
 
-default: $(DIR) $(LIB)
-
-$(DIR):
-	-mkdir $(DIR)
-
-$(LIB): $(OBJ)
+lib: 	$(OBJ)
 	$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
 	@cp $(EXTRAMAKE) Makefile.lammps
 
 # ------ COMPILE RULES ------
 
-$(DIR)%.o:%.cpp
-	$(CC) $(CCFLAGS) -c $< -o $@
+%.o:%.cpp
+	$(CC) $(CCFLAGS) -c $<
 
 # ------ DEPENDENCIES ------
 
@@ -104,7 +95,7 @@ include .depend
 # ------ CLEAN ------
 
 clean:
-	-rm $(DIR)*.o $(DIR)*.d *~ $(LIB)
+	-rm *.o *.d *~ $(LIB)
 
 tar:
 	-tar -cvf ../POEMS.tar $(FILES)
diff --git a/lib/poems/Makefile.serial b/lib/poems/Makefile.serial
new file mode 120000
index 0000000000000000000000000000000000000000..9d7bb000f9d5074bfe1234ef4c2ade3eea216c31
--- /dev/null
+++ b/lib/poems/Makefile.serial
@@ -0,0 +1 @@
+Makefile.g++
\ No newline at end of file
diff --git a/lib/qmmm/Makefile.mpi b/lib/qmmm/Makefile.mpi
new file mode 100644
index 0000000000000000000000000000000000000000..590b1047f89ac96515061651d1796d372daa7644
--- /dev/null
+++ b/lib/qmmm/Makefile.mpi
@@ -0,0 +1,66 @@
+# -*- Makefile -*- for coupling LAMMPS to PWscf for QM/MM molecular dynamics
+
+# this file will be copied to Makefile.lammps
+EXTRAMAKE = Makefile.lammps.empty
+
+# top level directory of Quantum ESPRESSO 5.4.1 or later
+QETOPDIR=$(HOME)/compile/espresso
+
+# import compiler settings from Quantum ESPRESSO
+sinclude $(QETOPDIR)/make.sys
+
+# FLAGS for c++ OpenMPI 1.8.8 or later when QE was compiled with GNU Fortran 4.x
+MPICXX=mpicxx
+MPICXXFLAGS= -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -O2 -g -fPIC\
+	-I../../src -I$(QETOPDIR)/COUPLE/include
+MPILIBS=-fopenmp -lgfortran -ldl -ljpeg -lpng -lz -lmpi_mpifh -lmpi
+
+# location of required libraries
+# part 1: hi-level libraries for building pw.x
+PWOBJS = \
+$(QETOPDIR)/COUPLE/src/libqecouple.a \
+$(QETOPDIR)/PW/src/libpw.a \
+$(QETOPDIR)/Modules/libqemod.a
+# part 2: lo-level libraries for all of Q-E
+LIBOBJS = \
+$(QETOPDIR)/FFTXlib/libqefft.a \
+$(QETOPDIR)/LAXlib/libqela.a   \
+$(QETOPDIR)/clib/clib.a   \
+$(QETOPDIR)/iotk/src/libiotk.a
+
+# part 3: add-on libraries and main library for LAMMPS
+sinclude ../../src/Makefile.package
+LAMMPSCFG = mpi
+LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a
+
+# part 4: local QM/MM library and progams
+SRC=pwqmmm.c libqmmm.c
+OBJ=$(SRC:%.c=%.o)
+
+
+default: libqmmm.a
+
+all : tldeps libqmmm.a pwqmmm.x
+
+pwqmmm.x : pwqmmm.o $(OBJ) $(PWOBJS) $(LIBOBJS) $(LAMMPSLIB)
+	$(MPICXX) $(LDFLAGS) -o $@ $^ $(PKG_PATH) $(PKG_LIB) $(MPILIBS) $(LIBS)
+
+libqmmm.a: libqmmm.o
+	$(AR) $(ARFLAGS) $@ $^
+	@cp $(EXTRAMAKE) Makefile.lammps
+
+%.o: %.c
+	$(MPICXX) -c $(LAMMPSFLAGS) $(MPICXXFLAGS) $< -o $@
+
+tldeps:
+	( cd $(QETOPDIR) ; $(MAKE) $(MFLAGS) couple || exit 1)
+	$(MAKE) -C ../../src $(MFLAGS) $(LAMMPSCFG)
+	$(MAKE) -C ../../src $(MFLAGS) mode=lib $(LAMMPSCFG)
+
+clean :
+	-rm -f *.x *.o *.a *~ *.F90 *.d *.mod *.i *.L
+
+# explicit dependencies
+
+pwqmmm.o: pwqmmm.c libqmmm.h
+libqmmm.o: libqmmm.c libqmmm.h
diff --git a/lib/qmmm/Makefile.serial b/lib/qmmm/Makefile.serial
new file mode 100644
index 0000000000000000000000000000000000000000..f09148279263fc5907be3a55e9df9fae8078c569
--- /dev/null
+++ b/lib/qmmm/Makefile.serial
@@ -0,0 +1,66 @@
+# -*- Makefile -*- for coupling LAMMPS to PWscf for QM/MM molecular dynamics
+
+# this file will be copied to Makefile.lammps
+EXTRAMAKE = Makefile.lammps.empty
+
+# top level directory of Quantum ESPRESSO 5.4.1 or later
+QETOPDIR=$(HOME)/compile/espresso
+
+# import compiler settings from Quantum ESPRESSO
+sinclude $(QETOPDIR)/make.sys
+
+# FLAGS for GNU c++ with STUBS. non-functional for real coupling
+MPICXX=g++
+MPICXXFLAGS= -I../../src/STUBS -O2 -g -fPIC\
+	-I../../src -I$(QETOPDIR)/COUPLE/include
+MPILIBS=-fopenmp -lgfortran -ldl -ljpeg -lpng -lz -lmpi_mpifh -lmpi
+
+# location of required libraries
+# part 1: hi-level libraries for building pw.x
+PWOBJS = \
+$(QETOPDIR)/COUPLE/src/libqecouple.a \
+$(QETOPDIR)/PW/src/libpw.a \
+$(QETOPDIR)/Modules/libqemod.a
+# part 2: lo-level libraries for all of Q-E
+LIBOBJS = \
+$(QETOPDIR)/FFTXlib/libqefft.a \
+$(QETOPDIR)/LAXlib/libqela.a   \
+$(QETOPDIR)/clib/clib.a   \
+$(QETOPDIR)/iotk/src/libiotk.a
+
+# part 3: add-on libraries and main library for LAMMPS
+sinclude ../../src/Makefile.package
+LAMMPSCFG = mpi
+LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a
+
+# part 4: local QM/MM library and progams
+SRC=pwqmmm.c libqmmm.c
+OBJ=$(SRC:%.c=%.o)
+
+
+default: libqmmm.a
+
+all : tldeps libqmmm.a pwqmmm.x
+
+pwqmmm.x : pwqmmm.o $(OBJ) $(PWOBJS) $(LIBOBJS) $(LAMMPSLIB)
+	$(MPICXX) $(LDFLAGS) -o $@ $^ $(PKG_PATH) $(PKG_LIB) $(MPILIBS) $(LIBS)
+
+libqmmm.a: libqmmm.o
+	$(AR) $(ARFLAGS) $@ $^
+	@cp $(EXTRAMAKE) Makefile.lammps
+
+%.o: %.c
+	$(MPICXX) -c $(LAMMPSFLAGS) $(MPICXXFLAGS) $< -o $@
+
+tldeps:
+	( cd $(QETOPDIR) ; $(MAKE) $(MFLAGS) couple || exit 1)
+	$(MAKE) -C ../../src $(MFLAGS) $(LAMMPSCFG)
+	$(MAKE) -C ../../src $(MFLAGS) mode=lib $(LAMMPSCFG)
+
+clean :
+	-rm -f *.x *.o *.a *~ *.F90 *.d *.mod *.i *.L
+
+# explicit dependencies
+
+pwqmmm.o: pwqmmm.c libqmmm.h
+libqmmm.o: libqmmm.c libqmmm.h
diff --git a/lib/reax/Makefile.gfortran b/lib/reax/Makefile.gfortran
index b2b16fcc57cf5faacc2ca5058dfff014ac91dd76..ab423016887a444548529d84c6a32d03fdb5c880 100644
--- a/lib/reax/Makefile.gfortran
+++ b/lib/reax/Makefile.gfortran
@@ -28,7 +28,7 @@ OBJ =   $(SRC:.F=.o)
 # ------ SETTINGS ------
 
 F90 =           gfortran
-F90FLAGS =      -O -fPIC -fno-second-underscore
+F90FLAGS =      -O3 -fPIC -fno-second-underscore
 ARCHIVE =	ar
 ARCHFLAG =	-rc
 USRLIB =
diff --git a/lib/reax/Makefile.lammps.empty b/lib/reax/Makefile.lammps.empty
new file mode 100644
index 0000000000000000000000000000000000000000..758755f3c8064d8b40d3d1af1310bd093a366004
--- /dev/null
+++ b/lib/reax/Makefile.lammps.empty
@@ -0,0 +1,5 @@
+# Settings that the LAMMPS build will import when this package library is used
+
+reax_SYSINC =
+reax_SYSLIB = 
+reax_SYSPATH =
diff --git a/lib/reax/Makefile.mpi b/lib/reax/Makefile.mpi
new file mode 100644
index 0000000000000000000000000000000000000000..142f7e9bc6ffc01a1e18fe12548af8e1b4638564
--- /dev/null
+++ b/lib/reax/Makefile.mpi
@@ -0,0 +1,51 @@
+# *
+# *_________________________________________________________________________*
+# *      Fortran Library for Reactive Force Field                           *
+# *      DESCRIPTION: SEE READ-ME                                           *
+# *      FILE NAME: Makefile                                                *
+# *      CONTRIBUTING AUTHORS: Hansohl Cho(MIT), Aidan Thompson(SNL)        *
+# *                            and Greg Wagner(SNL)                         * 
+# *      CONTACT: hansohl@mit.edu, athompson@sandia.gov, gjwagne@sandia.gov *
+# *_________________________________________________________________________*/
+
+SHELL = /bin/sh
+
+# which file will be copied to Makefile.lammps
+
+EXTRAMAKE = Makefile.lammps.empty
+
+# ------ FILES ------
+
+SRC = reax_connect.F reax_inout.F reax_lammps.F reax_poten.F reax_reac.F reax_charges.F
+
+HEADERFILES = reax_defs.h *.blk 
+
+# ------ DEFINITIONS ------
+
+LIB = libreax.a
+OBJ =   $(SRC:.F=.o)
+
+# ------ SETTINGS ------
+
+F90 =           mpifort
+F90FLAGS =      -O3 -fPIC
+ARCHIVE =	ar
+ARCHFLAG =	-rc
+USRLIB =
+SYSLIB =
+
+# ------ MAKE PROCEDURE ------
+
+lib: 	$(OBJ)
+	$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
+	@cp $(EXTRAMAKE) Makefile.lammps
+
+# ------ COMPILE RULES ------
+
+%.o:%.F $(HEADERFILES)
+	$(F90) $(F90FLAGS) -c $<
+
+# ------ CLEAN ------
+
+clean:
+	-rm *.o $(LIB)
diff --git a/lib/reax/Makefile.serial b/lib/reax/Makefile.serial
new file mode 120000
index 0000000000000000000000000000000000000000..c52fbcb986822e3dfdc79a978a876fb39a762f71
--- /dev/null
+++ b/lib/reax/Makefile.serial
@@ -0,0 +1 @@
+Makefile.gfortran
\ No newline at end of file
diff --git a/lib/smd/Install.py b/lib/smd/Install.py
index 337f993be5d192623996aa2f1cf361f0ff54eba2..fe0283563969b928b308974bf09cd766732206fe 100644
--- a/lib/smd/Install.py
+++ b/lib/smd/Install.py
@@ -98,7 +98,7 @@ if buildflag:
   edir = glob.glob("%s/eigen-eigen-*" % homepath)
   for one in edir:
     if os.path.isdir(one):
-      subprocess.check_output("rm -rf %s" % one,stderr=subprocess.STDOUT,shell=True)
+      subprocess.check_output('rm -rf "%s"' % one,stderr=subprocess.STDOUT,shell=True)
   cmd = 'cd "%s"; tar -xzvf %s' % (homepath,tarball)
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
   edir = glob.glob("%s/eigen-eigen-*" % homepath)
@@ -113,5 +113,5 @@ if linkflag:
     os.remove("includelink")
   if pathflag: linkdir = eigenpath
   else: linkdir = "%s/%s" % (homepath,homedir)
-  cmd = "ln -s %s includelink" % linkdir
+  cmd = 'ln -s "%s" includelink' % linkdir
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
diff --git a/lib/smd/Makefile.lammps b/lib/smd/Makefile.lammps
index 7bbf3924ef933076644c6c30c65871fcf2875cb0..6951a1394cfe928a4aa0fc6ac96281fd6d20d3db 100644
--- a/lib/smd/Makefile.lammps
+++ b/lib/smd/Makefile.lammps
@@ -1,5 +1,5 @@
 # Settings that the LAMMPS build will import when this package library is used
 
-user-smd_SYSINC = 
+user-smd_SYSINC = -I../../lib/includelink/eigen3
 user-smd_SYSLIB = 
 user-smd_SYSPATH = 
diff --git a/lib/voronoi/Install.py b/lib/voronoi/Install.py
index 17bba5e8eb5cdfe0e0cd013c74433c894c4f4038..6db0495a37f048ab94dff1d04d5eb2551bb46912 100644
--- a/lib/voronoi/Install.py
+++ b/lib/voronoi/Install.py
@@ -5,8 +5,16 @@
 
 from __future__ import print_function
 import sys,os,re,subprocess
-try: from urllib.request import urlretrieve as geturl
-except: from urllib import urlretrieve as geturl
+
+try:
+  import ssl
+  try: from urllib.request import urlretrieve as geturl
+  except: from urllib import urlretrieve as geturl
+except:
+  def geturl(url,fname):
+    cmd = 'curl -L -o "%s" %s' % (fname,url)
+    txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
+    return txt
 
 # help message
 
@@ -55,7 +63,6 @@ nargs = len(args)
 homepath = "."
 homedir = version
 
-grabflag = True
 buildflag = True
 pathflag = False
 linkflag = True
@@ -89,7 +96,7 @@ if (buildflag and pathflag):
 
 # download and unpack Voro++ tarball
 
-if grabflag:
+if buildflag:
   print("Downloading Voro++ ...")
   geturl(url,"%s/%s.tar.gz" % (homepath,version))
 
@@ -122,7 +129,7 @@ if linkflag:
     os.remove("includelink")
   if os.path.isfile("liblink") or os.path.islink("liblink"):
     os.remove("liblink")
-  cmd = ['ln -s "%s/src" includelink' % homedir, 'includelink']
+  cmd = 'ln -s "%s/src" includelink' % homedir
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
-  cmd = ['ln -s "%s/src" liblink' % homedir]
+  cmd = 'ln -s "%s/src" liblink' % homedir
   subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)