diff --git a/signals/src/signal.rs b/signals/src/signal.rs
index b0d3068..c27fc0e 100644
--- a/signals/src/signal.rs
+++ b/signals/src/signal.rs
@@ -455,82 +455,93 @@ impl Signal for Flatten
pub mod unsync {
use super::{Signal, State};
use std::rc::{Rc, Weak};
- use std::cell::RefCell;
+ use std::cell::{Cell, RefCell};
use futures::task;
+ use futures::task::Task;
- struct Inner {
- value: Option,
- task: Option,
+ struct MutableState {
+ value: A,
+ receivers: Vec>>,
+ }
+
+ struct MutableSignalState {
+ has_changed: Cell,
+ task: RefCell