newtype Cell2 a = Cell2 (Cell (MemoLazy a))
newtype Stream2 a = Stream2 (Stream (MemoLazy a))
Cell2 / Stream2 are now push pull implementations formed from the Cell / Stream push implementations.
Then do wrapper functions for everything. Its a dirty trick, but I think it does the trick. You get instant push pull for the other push implementations.