                 @version = version
             else
                 return false
+
+    class HashView extends SyncView
+        onDataUpdated: (source, version, data) ->
+            if super(source, version, data)
+                location.hash = '!' + encodeURIComponent(data)
 
     class LinkView extends SyncView
         constructor: (syncMaster, render) ->

            @outline = outline

            outline.onDidEndChanges () =>
                @syncMaster.update(this, @outline.serialize())


        onDataUpdated: (source, version, data) =>

            @data = ''
            @version = 0

        update: (data, source) =>
            source = source or this
            if source.version is @version and data isnt @data
                slog ['SyncMaster.update:', this, data is @data].concat(Array.from(arguments))
                @data = data
