diff --git a/lib/routing.js b/lib/routing.js
index <HASH>..<HASH> 100644
--- a/lib/routing.js
+++ b/lib/routing.js
@@ -224,8 +224,8 @@ var route = function(conf, method, pattern, action, rdy, options) {
               if (sectionName === 'main' && !isMain) return
               var fragment = app.sections[sectionName]
               if (fragment) {
-                fragment.emit('delete')
                 if (fragment.template !== template) {
+                  fragment.emit('delete')
                   fragment.template = template
                   fragment.refresh()
                 }
diff --git a/lib/state.js b/lib/state.js
index <HASH>..<HASH> 100644
--- a/lib/state.js
+++ b/lib/state.js
@@ -30,8 +30,10 @@ State.prototype.register = function(name, obj) {
   if (name in this) {
     if (Array.isArray(this[name]) && typeof this[name].reset === 'function')
       this[name].reset(obj)
-    else
+    else {
       this[name] = obj
+      this.emit('changed.' + name)
+    }
     return
   }
   var that = this
Fix Fragment/State-Change-related Events