diff --git a/docs/indexes/pinecone-sync-routes.ipynb b/docs/indexes/pinecone-sync-routes.ipynb
index 67738ebc9c23fbe8b1dab8efdd2dcfc99d72c192..14e78905194b87a20fe768323a00235972408672 100644
--- a/docs/indexes/pinecone-sync-routes.ipynb
+++ b/docs/indexes/pinecone-sync-routes.ipynb
@@ -6,7 +6,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "!pip install -qU \"semantic-router[pinecone]==0.1.0.dev0\""
+    "!pip install -qU \"semantic-router[pinecone]==0.1.0.dev1\""
    ]
   },
   {
diff --git a/docs/source/conf.py b/docs/source/conf.py
index aa9ffa7319bd57bdc4e9343271bc49f9e79a2f7d..2dae787f1cb09b53476cd424cb45108ea15386d0 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -15,7 +15,7 @@ sys.path.insert(0, os.path.abspath("../.."))  # Source code dir relative to this
 project = "Semantic Router"
 copyright = "2024, Aurelio AI"
 author = "Aurelio AI"
-release = "0.1.0.dev0"
+release = "0.1.0.dev1"
 
 # -- General configuration ---------------------------------------------------
 # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
diff --git a/pyproject.toml b/pyproject.toml
index 42d11227a05da91faa276cbc5803e419aba9ab4d..68881c73da1889d6316580a45261065234881e7c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "semantic-router"
-version = "0.1.0.dev0"
+version = "0.1.0.dev1"
 description = "Super fast semantic router for AI decision making"
 authors = ["Aurelio AI <hello@aurelio.ai>"]
 readme = "README.md"
diff --git a/semantic_router/__init__.py b/semantic_router/__init__.py
index a45ea30a761df92f8811621d9969b0af3998fcb3..a2ed0d0718f3ed59947678c574c44805c979afee 100644
--- a/semantic_router/__init__.py
+++ b/semantic_router/__init__.py
@@ -4,4 +4,4 @@ from semantic_router.route import Route
 
 __all__ = ["RouteLayer", "HybridRouteLayer", "Route", "LayerConfig"]
 
-__version__ = "0.1.0.dev0"
+__version__ = "0.1.0.dev1"
diff --git a/semantic_router/layer.py b/semantic_router/layer.py
index f34ec9d1f2be9abfd978f9b0e66a29b1ad124496..ec051633364696ebf3c0361bd229e4a445a1f392 100644
--- a/semantic_router/layer.py
+++ b/semantic_router/layer.py
@@ -488,7 +488,7 @@ class RouteLayer:
             remote_utterances=remote_utterances,
         )
         # generate sync strategy
-        sync_strategy = diff.to_sync_strategy()
+        sync_strategy = diff.get_sync_strategy(sync_mode=sync_mode)
         # and execute
         self._execute_sync_strategy(sync_strategy)
         return diff.to_utterance_str()
diff --git a/semantic_router/schema.py b/semantic_router/schema.py
index ca5e55c4ea9ceb541ad9e93ce7a0939ce04c57a9..ef2b219062ee175869cb65796c2f957064e4becd 100644
--- a/semantic_router/schema.py
+++ b/semantic_router/schema.py
@@ -98,6 +98,8 @@ class Utterance(BaseModel):
         """
         route, utterance = tuple_obj[0], tuple_obj[1]
         function_schemas = tuple_obj[2] if len(tuple_obj) > 2 else None
+        if isinstance(function_schemas, dict):
+            function_schemas = [function_schemas]
         metadata = tuple_obj[3] if len(tuple_obj) > 3 else {}
         return cls(
             route=route,
diff --git a/tests/unit/test_sync.py b/tests/unit/test_sync.py
index 296da0d21d851f8e22aaf157069387fef7a6f44d..6235088fcbf4dca05afafccdd4e0a35a397cbc41 100644
--- a/tests/unit/test_sync.py
+++ b/tests/unit/test_sync.py
@@ -381,6 +381,21 @@ class TestRouteLayer:
                 Utterance(route="Route 3", utterance="Boo"),
             ], "The routes in the index should match the local routes"
 
+    @pytest.mark.skipif(
+        os.environ.get("PINECONE_API_KEY") is None, reason="Pinecone API key required"
+    )
+    def test_sync(self, openai_encoder, index_cls):
+        route_layer = RouteLayer(
+            encoder=openai_encoder,
+            routes=[],
+            index=init_index(index_cls),
+            auto_sync=None,
+        )
+        route_layer.sync("remote")
+        time.sleep(PINECONE_SLEEP)  # allow for index to be populated
+        # confirm local and remote are synced
+        assert route_layer.is_synced()
+
     @pytest.mark.skipif(
         os.environ.get("PINECONE_API_KEY") is None, reason="Pinecone API key required"
     )