diff --git a/configure b/configure
index e0cdd98..8834897 100755
--- a/configure
+++ b/configure
@@ -19023,13 +19023,13 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
-		#include <tr1/unordered_map>
+		#include <unordered_map>
 
 int
 main ()
 {
 
-		std::tr1::unordered_map<int,int>::const_iterator iter;
+		std::unordered_map<int,int>::const_iterator iter;
 
   ;
   return 0;
@@ -19043,6 +19043,48 @@ $as_echo "yes" >&6; }
 $as_echo "#define HASH_MAP_CLASS HASH_MAP_NAMESPACE::unordered_map" >>confdefs.h
 
 
+$as_echo "#define HASH_MAP_H <unordered_map>" >>confdefs.h
+
+
+$as_echo "#define HASH_MAP_NAMESPACE std" >>confdefs.h
+
+
+$as_echo "#define FUNCTIONAL_H <functional>" >>confdefs.h
+
+
+$as_echo "#define FUNCTIONAL_HASH_ON_STRING 1" >>confdefs.h
+
+
+else
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tr1/unordered_map<int,int>::const_iterator" >&5
+$as_echo_n "checking for tr1/unordered_map<int,int>::const_iterator... " >&6; }
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+			#include <tr1/unordered_map>
+
+int
+main ()
+{
+
+			std::tr1::unordered_map<int,int>::const_iterator iter;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HASH_MAP_CLASS HASH_MAP_NAMESPACE::unordered_map" >>confdefs.h
+
+
 $as_echo "#define HASH_MAP_H <tr1/unordered_map>" >>confdefs.h
 
 
@@ -19057,9 +19099,9 @@ $as_echo "#define FUNCTIONAL_HASH_ON_STRING 1" >>confdefs.h
 
 else
 
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-	for ac_header in ext/hash_map
+		for ac_header in ext/hash_map
 do :
   ac_fn_cxx_check_header_mongrel "$LINENO" "ext/hash_map" "ac_cv_header_ext_hash_map" "$ac_includes_default"
 if test "x$ac_cv_header_ext_hash_map" = xyes; then :
@@ -19082,7 +19124,7 @@ $as_echo "#define FUNCTIONAL_H <ext/functional>" >>confdefs.h
 
 else
 
-		as_fn_error $? "C++ compiler does not seem to support unordered containers" "$LINENO" 5
+			as_fn_error $? "C++ compiler does not seem to support unordered containers" "$LINENO" 5
 
 fi
 
@@ -19092,6 +19134,9 @@ done
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 # Check for unordered_set or hash_set headers
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unordered_set<int,int>::const_iterator" >&5
 $as_echo_n "checking for unordered_set<int,int>::const_iterator... " >&6; }
@@ -19099,13 +19144,13 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
-		#include <tr1/unordered_set>
+		#include <unordered_set>
 
 int
 main ()
 {
 
-		std::tr1::unordered_set<int,int>::const_iterator iter;
+		std::unordered_set<int,int>::const_iterator iter;
 
   ;
   return 0;
@@ -19119,6 +19164,42 @@ $as_echo "yes" >&6; }
 $as_echo "#define HASH_SET_CLASS HASH_SET_NAMESPACE::unordered_set" >>confdefs.h
 
 
+$as_echo "#define HASH_SET_H <unordered_set>" >>confdefs.h
+
+
+$as_echo "#define HASH_SET_NAMESPACE std" >>confdefs.h
+
+
+else
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tr1/unordered_set<int,int>::const_iterator" >&5
+$as_echo_n "checking for tr1/unordered_set<int,int>::const_iterator... " >&6; }
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+			#include <tr1/unordered_set>
+
+int
+main ()
+{
+
+			std::tr1::unordered_set<int,int>::const_iterator iter;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HASH_SET_CLASS HASH_SET_NAMESPACE::unordered_set" >>confdefs.h
+
+
 $as_echo "#define HASH_SET_H <tr1/unordered_set>" >>confdefs.h
 
 
@@ -19127,9 +19208,9 @@ $as_echo "#define HASH_SET_NAMESPACE std::tr1" >>confdefs.h
 
 else
 
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-	for ac_header in ext/hash_set
+		for ac_header in ext/hash_set
 do :
   ac_fn_cxx_check_header_mongrel "$LINENO" "ext/hash_set" "ac_cv_header_ext_hash_set" "$ac_includes_default"
 if test "x$ac_cv_header_ext_hash_set" = xyes; then :
@@ -19149,7 +19230,7 @@ $as_echo "#define HASH_SET_NAMESPACE __gnu_cxx" >>confdefs.h
 
 else
 
-		as_fn_error $? "C++ compiler does not seem to support unordered containers" "$LINENO" 5
+			as_fn_error $? "C++ compiler does not seem to support unordered containers" "$LINENO" 5
 
 fi
 
@@ -19159,6 +19240,9 @@ done
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 # -- H E A D E R S --------------------------------------------
 
 for ac_header in unistd.h signal.h fcntl.h
diff --git a/configure.ac b/configure.ac
index 76f3b58..ea6a323 100755
--- a/configure.ac
+++ b/configure.ac
@@ -195,25 +195,41 @@ if test $with_libfmod = "yes" ; then {
 AC_MSG_CHECKING([for unordered_map<int,int>::const_iterator])
 AC_COMPILE_IFELSE([
 	AC_LANG_PROGRAM([
-		[#include <tr1/unordered_map>]
+		[#include <unordered_map>]
 	],[
-		[std::tr1::unordered_map<int,int>::const_iterator iter;]
+		[std::unordered_map<int,int>::const_iterator iter;]
 	])],[
 	AC_MSG_RESULT([yes])
 	AC_DEFINE([HASH_MAP_CLASS],[HASH_MAP_NAMESPACE::unordered_map],[The template name for unordered maps.])
-	AC_DEFINE([HASH_MAP_H],[<tr1/unordered_map>],[The header file to include for unordered maps.])
-	AC_DEFINE([HASH_MAP_NAMESPACE],[std::tr1],[The namespace for unordered maps.])
-	AC_DEFINE([FUNCTIONAL_H],[<tr1/functional>],[The header file for hash<T>.])
+	AC_DEFINE([HASH_MAP_H],[<unordered_map>],[The header file to include for unordered maps.])
+	AC_DEFINE([HASH_MAP_NAMESPACE],[std],[The namespace for unordered maps.])
+	AC_DEFINE([FUNCTIONAL_H],[<functional>],[The header file for hash<T>.])
 	AC_DEFINE([FUNCTIONAL_HASH_ON_STRING],[1],[Define to 1 if hash<T> needs to use T=String rather than T=char* to hash strings.])
 ],[
 	AC_MSG_RESULT([no])
-	AC_CHECK_HEADERS([ext/hash_map],[
-		AC_DEFINE([HASH_MAP_CLASS],[HASH_MAP_NAMESPACE::hash_map],[The template name for unordered maps.])
-		AC_DEFINE([HASH_MAP_H],[<ext/hash_map>],[The header file to include for unordered maps.])
-		AC_DEFINE([HASH_MAP_NAMESPACE],[__gnu_cxx],[The namespace for unordered maps.])
-		AC_DEFINE([FUNCTIONAL_H],[<ext/functional>],[The header file for hash<T>.])
+	AC_MSG_CHECKING([for tr1/unordered_map<int,int>::const_iterator])
+	AC_COMPILE_IFELSE([
+		AC_LANG_PROGRAM([
+			[#include <tr1/unordered_map>]
+		],[
+			[std::tr1::unordered_map<int,int>::const_iterator iter;]
+		])],[
+		AC_MSG_RESULT([yes])
+		AC_DEFINE([HASH_MAP_CLASS],[HASH_MAP_NAMESPACE::unordered_map],[The template name for unordered maps.])
+		AC_DEFINE([HASH_MAP_H],[<tr1/unordered_map>],[The header file to include for unordered maps.])
+		AC_DEFINE([HASH_MAP_NAMESPACE],[std::tr1],[The namespace for unordered maps.])
+		AC_DEFINE([FUNCTIONAL_H],[<tr1/functional>],[The header file for hash<T>.])
+		AC_DEFINE([FUNCTIONAL_HASH_ON_STRING],[1],[Define to 1 if hash<T> needs to use T=String rather than T=char* to hash strings.])
 	],[
-		AC_MSG_ERROR([C++ compiler does not seem to support unordered containers])
+		AC_MSG_RESULT([no])
+		AC_CHECK_HEADERS([ext/hash_map],[
+			AC_DEFINE([HASH_MAP_CLASS],[HASH_MAP_NAMESPACE::hash_map],[The template name for unordered maps.])
+			AC_DEFINE([HASH_MAP_H],[<ext/hash_map>],[The header file to include for unordered maps.])
+			AC_DEFINE([HASH_MAP_NAMESPACE],[__gnu_cxx],[The namespace for unordered maps.])
+			AC_DEFINE([FUNCTIONAL_H],[<ext/functional>],[The header file for hash<T>.])
+		],[
+			AC_MSG_ERROR([C++ compiler does not seem to support unordered containers])
+		])
 	])
 ])
 
@@ -221,22 +237,36 @@ AC_COMPILE_IFELSE([
 AC_MSG_CHECKING([for unordered_set<int,int>::const_iterator])
 AC_COMPILE_IFELSE([
 	AC_LANG_PROGRAM([
-		[#include <tr1/unordered_set>]
+		[#include <unordered_set>]
 	],[
-		[std::tr1::unordered_set<int,int>::const_iterator iter;]
+		[std::unordered_set<int,int>::const_iterator iter;]
 	])],[
 	AC_MSG_RESULT([yes])
 	AC_DEFINE([HASH_SET_CLASS],[HASH_SET_NAMESPACE::unordered_set],[The template name for unordered sets.])
-	AC_DEFINE([HASH_SET_H],[<tr1/unordered_set>],[The header file to include for unordered sets.])
-	AC_DEFINE([HASH_SET_NAMESPACE],[std::tr1],[The namespace for unordered sets.])
+	AC_DEFINE([HASH_SET_H],[<unordered_set>],[The header file to include for unordered sets.])
+	AC_DEFINE([HASH_SET_NAMESPACE],[std],[The namespace for unordered sets.])
 ],[
 	AC_MSG_RESULT([no])
-	AC_CHECK_HEADERS([ext/hash_set],[
-		AC_DEFINE([HASH_SET_CLASS],[HASH_SET_NAMESPACE::hash_set],[The template name for unordered sets.])
-		AC_DEFINE([HASH_SET_H],[<ext/hash_set>],[The header file to include for unordered sets.])
-		AC_DEFINE([HASH_SET_NAMESPACE],[__gnu_cxx],[The namespace for unordered sets.])
+	AC_MSG_CHECKING([for tr1/unordered_set<int,int>::const_iterator])
+	AC_COMPILE_IFELSE([
+		AC_LANG_PROGRAM([
+			[#include <tr1/unordered_set>]
+		],[
+			[std::tr1::unordered_set<int,int>::const_iterator iter;]
+		])],[
+		AC_MSG_RESULT([yes])
+		AC_DEFINE([HASH_SET_CLASS],[HASH_SET_NAMESPACE::unordered_set],[The template name for unordered sets.])
+		AC_DEFINE([HASH_SET_H],[<tr1/unordered_set>],[The header file to include for unordered sets.])
+		AC_DEFINE([HASH_SET_NAMESPACE],[std::tr1],[The namespace for unordered sets.])
 	],[
-		AC_MSG_ERROR([C++ compiler does not seem to support unordered containers])
+		AC_MSG_RESULT([no])
+		AC_CHECK_HEADERS([ext/hash_set],[
+			AC_DEFINE([HASH_SET_CLASS],[HASH_SET_NAMESPACE::hash_set],[The template name for unordered sets.])
+			AC_DEFINE([HASH_SET_H],[<ext/hash_set>],[The header file to include for unordered sets.])
+			AC_DEFINE([HASH_SET_NAMESPACE],[__gnu_cxx],[The namespace for unordered sets.])
+		],[
+			AC_MSG_ERROR([C++ compiler does not seem to support unordered containers])
+		])
 	])
 ])
 
diff --git a/src/gui/preview.cpp b/src/gui/preview.cpp
index 2cde49e..0126f40 100644
--- a/src/gui/preview.cpp
+++ b/src/gui/preview.cpp
@@ -54,7 +54,7 @@
 #include <cstdio>
 #include <ctype.h>
 #include <math.h>
-#include <synfig/string_decl.h>
+#include <synfig/string.h>
 
 #endif
 
diff -ruN synfigstudio-0.64.0-orig/src/gui/states/state_draw.cpp synfigstudio-0.64.0/src/gui/states/state_draw.cpp
--- synfigstudio-0.64.0-orig/src/gui/states/state_draw.cpp	2013-05-09 11:32:41.000000000 -0500
+++ synfigstudio-0.64.0/src/gui/states/state_draw.cpp	2016-10-31 06:56:39.000000000 -0500
@@ -1833,8 +1833,8 @@
 								printf("in one - it's close\n");
 								ValueNode_Composite::Handle value_node;
 								ValueNode_Composite::Handle value_node_next;
-								value_node=ValueNode_Composite::Handle::cast_dynamic(value_desc.get_value_node().clone());
-								value_node_next=ValueNode_Composite::Handle::cast_dynamic(value_next.get_value_node().clone());
+								value_node=ValueNode_Composite::Handle::cast_dynamic(value_desc.get_value_node()->clone());
+								value_node_next=ValueNode_Composite::Handle::cast_dynamic(value_next.get_value_node()->clone());
 								if(!value_node || !value_node_next)
 								{
 									synfig::info(__FILE__":%d: Unable to properly connect blines.",__LINE__);
diff -ruN synfigstudio-0.64.0-orig/src/synfigapp/actions/layerparamdisconnect.cpp synfigstudio-0.64.0/src/synfigapp/actions/layerparamdisconnect.cpp
--- synfigstudio-0.64.0-orig/src/synfigapp/actions/layerparamdisconnect.cpp	2013-05-09 11:32:41.000000000 -0500
+++ synfigstudio-0.64.0/src/synfigapp/actions/layerparamdisconnect.cpp	2016-10-31 06:56:12.000000000 -0500
@@ -140,7 +140,7 @@
 	if(new_value_node || ValueNode_DynamicList::Handle::cast_dynamic(old_value_node))
 	{
 		if(!new_value_node)
-			new_value_node=old_value_node.clone();
+			new_value_node=old_value_node->clone();
 		layer->connect_dynamic_param(param_name,new_value_node);
 	}
 	else