diff --git a/agkyra/agkyra/syncer/common.py b/agkyra/agkyra/syncer/common.py
index cea5a48c09f0a1b33872dbbdc007baa5e02de7e6..3cd17acf3d372939e4e64789e7920990059c4af0 100644
--- a/agkyra/agkyra/syncer/common.py
+++ b/agkyra/agkyra/syncer/common.py
@@ -1,6 +1,9 @@
 from collections import namedtuple
 import threading
 
+OBJECT_DIRSEP = '/'
+
+
 FileStateTuple = namedtuple('FileStateTuple',
                             ['archive', 'objname', 'serial', 'info'])
 
diff --git a/agkyra/agkyra/syncer/localfs_client.py b/agkyra/agkyra/syncer/localfs_client.py
index 38b54b792797dd36735f9976b9d8bc80e0fb6ddc..0d57e0d5c8aae2b2c09301fb299bb2420f8b9dab 100644
--- a/agkyra/agkyra/syncer/localfs_client.py
+++ b/agkyra/agkyra/syncer/localfs_client.py
@@ -467,12 +467,16 @@ class LocalfsFileClient(FileClient):
             # if self.exclude_dir_exp.match(dirpath):
             #     continue
             if rel_dirpath != '.':
-                candidates[rel_dirpath] = None
+                candidates[utils.to_standard_sep(rel_dirpath)] = None
             for filename in files:
                 # if self.exclude_files_exp.match(filename) or \
                 #         self.exclude_dir_exp.match(filename):
                 #     continue
-                objname = utils.join_path(rel_dirpath, filename)
+                if rel_dirpath == '.':
+                    prefix = ""
+                else:
+                    prefix = utils.to_standard_sep(rel_dirpath)
+                objname = utils.join_objname(prefix, filename)
                 candidates[objname] = None
 
         db_cands = dict((name, None) for name in db.list_files(self.SIGNATURE))
@@ -507,8 +511,9 @@ class LocalfsFileClient(FileClient):
     def notifier(self, callback=None):
         def handle_path(path):
             rel_path = os.path.relpath(path, start=self.ROOTPATH)
+            objname = utils.to_standard_sep(rel_path)
             if callback is not None:
-                callback(self.SIGNATURE, rel_path)
+                callback(self.SIGNATURE, objname)
 
         class EventHandler(FileSystemEventHandler):
             def on_created(this, event):
diff --git a/agkyra/agkyra/syncer/syncer.py b/agkyra/agkyra/syncer/syncer.py
index 16d672cb8c268d7ae4b544eb482f2fea74e28b14..51e366b2b8bf7895198434cc3e45175b9d2206af 100644
--- a/agkyra/agkyra/syncer/syncer.py
+++ b/agkyra/agkyra/syncer/syncer.py
@@ -2,7 +2,6 @@ import time
 import threading
 import logging
 import re
-import os
 
 from agkyra.syncer import common
 from agkyra.syncer.setup import SyncerSettings
@@ -69,7 +68,7 @@ class FileSyncer(object):
             self.decide_event.clear()
 
     def exclude_file(self, objname):
-        parts = objname.split(os.path.sep)
+        parts = objname.split(common.OBJECT_DIRSEP)
         init_part = parts[0]
         if init_part in [self.settings.cache_name]:
             return True
diff --git a/agkyra/agkyra/syncer/utils.py b/agkyra/agkyra/syncer/utils.py
index bbc80cf5fd032954bfa77ad049ffbec72cd518a8..6f234066c591173f6ddbb6600b018f665d1802c0 100644
--- a/agkyra/agkyra/syncer/utils.py
+++ b/agkyra/agkyra/syncer/utils.py
@@ -2,13 +2,27 @@ import os
 import hashlib
 import datetime
 
+from agkyra.syncer.common import OBJECT_DIRSEP
+
 BUF_SIZE = 65536
 
 
+def to_local_sep(filename):
+    return filename.replace(OBJECT_DIRSEP, os.path.sep)
+
+
+def to_standard_sep(filename):
+    return filename.replace(os.path.sep, OBJECT_DIRSEP)
+
+
 def join_path(dirpath, filename):
-    if dirpath == ".":
-        dirpath = ""
-    return os.path.join(dirpath, filename)
+    return os.path.join(dirpath, to_local_sep(filename))
+
+
+def join_objname(prefix, filename):
+    if prefix != "":
+        prefix = prefix.rstrip(OBJECT_DIRSEP) + OBJECT_DIRSEP
+    return prefix + filename
 
 
 def hash_string(s):