diff --git a/src/signal/mutable.rs b/src/signal/mutable.rs
index a05db35..33c5337 100644
--- a/src/signal/mutable.rs
+++ b/src/signal/mutable.rs
@@ -287,10 +287,10 @@ impl Mutable {
         state2.notify(true);
     }
 
-    pub fn set(&self, value: A) {
+    pub fn set>(&self, value: V) {
         let mut state = self.state().lock.write().unwrap();
 
-        state.value = value;
+        state.value = value.into();
 
         state.notify(true);
     }
@@ -321,7 +321,7 @@ impl From for Mutable {
         Mutable(ReadOnlyMutable(Arc::new(MutableState {
             senders: AtomicUsize::new(1),
             lock: RwLock::new(MutableLockState {
-                value: value.into(),
+                value,
                 signals: vec![],
             }),
         })))
diff --git a/src/signal_vec.rs b/src/signal_vec.rs
index 83a8e01..d0db718 100644
--- a/src/signal_vec.rs
+++ b/src/signal_vec.rs
@@ -3304,8 +3304,8 @@ mod mutable_vec {
 
         // TODO replace this with something else, like entry or IndexMut or whatever
         #[inline]
-        pub fn set(&mut self, index: usize, value: A) {
-            self.lock.set_copy(index, value)
+        pub fn set>(&mut self, index: usize, value: V) {
+            self.lock.set_copy(index, value.into())
         }
 
         #[inline]