diff --git a/src/projection/reverse_list.rs b/src/projection/reverse_list.rs
index c020233..d0b78ff 100644
--- a/src/projection/reverse_list.rs
+++ b/src/projection/reverse_list.rs
@@ -78,24 +78,20 @@ where Item: Clone + Send + Sync + 'static,
         if let Some(v) = self.src_view.as_ref() {
             self.end = v.len().unwrap();
             for idx in 0 .. self.end {
-                if idx < self.end {
-                    let val = v.get( &(self.end - idx - 1) ).unwrap();
-                    self.cast.notify(&ListDiff::Insert{ idx: idx, val });
-                }
+                let val = v.get( &(self.end - idx - 1) ).unwrap();
+                self.cast.notify(&ListDiff::Insert{ idx: idx, val });
             }
+        } else {
+            self.end = 0;
         }
     }
 
     fn notify(&mut self, msg: &ListDiff<Item>) {
-        /* todo optimize
-         */
-        //let len = self.src_view.len().unwrap();
-
         self.cast.notify(&match msg {
             ListDiff::Clear => {
                 self.end = 0;
                 ListDiff::Clear
-            },
+            }
             ListDiff::Remove(mut idx) => {
                 self.end -= 1;
                 idx = self.end - idx;
diff --git a/src/projection/vec2list.rs b/src/projection/vec2list.rs
index febf290..1026fb4 100644
--- a/src/projection/vec2list.rs
+++ b/src/projection/vec2list.rs
@@ -67,6 +67,7 @@ where
     fn notify(&mut self, diff: &VecDiff<T>) {
         match diff {
             VecDiff::Clear => {
+                self.cur_len = 0;
                 self.cast.notify(&ListDiff::Clear);
             }
             VecDiff::Push(val) => {
diff --git a/src/view/port.rs b/src/view/port.rs
index 3dac40d..25d045d 100644
--- a/src/view/port.rs
+++ b/src/view/port.rs
@@ -107,8 +107,6 @@ where V::Msg: Clone
     pub fn attach_to_port(&self, other_port: ViewPort<V>) {
         self.set_view( other_port.view.read().unwrap().clone() );
         other_port.add_observer( self.cast.clone() );
-        // todo: forward reset() ?
-
         self.update_hooks.write().unwrap().clear();
         self.add_update_hook( Arc::new(other_port) );
     }