diff --git a/src/Reactix.purs b/src/Reactix.purs
index 09b21320b16568577c56c79a42da127afbc69b06..9dfd50f1ea867f67934e7cab1bcfff9d77bbb891 100644
--- a/src/Reactix.purs
+++ b/src/Reactix.purs
@@ -1,9 +1,7 @@
 module Reactix
-  ( module Reactix.React
-  , module Reactix.Hooks
-  , module Reactix.SyntheticEvent
+  ( module Exports
   ) where
 
-import Reactix.React
-import Reactix.Hooks
-import Reactix.SyntheticEvent (SyntheticEvent)
+import Reactix.React (class IsComponent, Component, Consumer, Context, Element, Hooks, Memo, Provider, React, ReactDOM, Ref, consume, consumeContext, consumer, createContext, createDOMElement, createElement, createPortal, createRef, fragment, hooksComponent, isValid, memo, memo', provide, provideContext, provider, react, reactDOM, readNullableRef, readRef, render, runHooks, setRef, staticComponent, unsafeHooksEffect) as Exports
+import Reactix.Hooks (Reducer, State, nothing, thenNothing, unsafeUseCallback, unsafeUseEffect, unsafeUseImperativeHandle, unsafeUseLayoutEffect, unsafeUseMemo, useCallback, useCallback1, useCallback2, useCallback3, useCallback4, useCallback5, useContext, useDebugValue, useDebugValue', useEffect, useEffect', useEffect1, useEffect1', useEffect2, useEffect2', useEffect3, useEffect3', useEffect4, useEffect4', useEffect5, useEffect5', useEffectFn1, useEffectFn1', useEffectFn2, useEffectFn2', useEffectFn3, useEffectFn3', useEffectFn4, useEffectFn4', useEffectFn5, useEffectFn5', useEffectOnce, useEffectOnce', useImperativeHandle, useImperativeHandle1, useImperativeHandle2, useImperativeHandle3, useImperativeHandle4, useImperativeHandle5, useLayoutEffect, useLayoutEffect', useLayoutEffect1, useLayoutEffect1', useLayoutEffect2, useLayoutEffect2', useLayoutEffect3, useLayoutEffect3', useLayoutEffect4, useLayoutEffect4', useLayoutEffect5, useLayoutEffect5', useLayoutEffectFn1, useLayoutEffectFn1', useLayoutEffectFn2, useLayoutEffectFn2', useLayoutEffectFn3, useLayoutEffectFn3', useLayoutEffectFn4, useLayoutEffectFn4', useLayoutEffectFn5, useLayoutEffectFn5', useMemo, useMemo1, useMemo2, useMemo3, useMemo4, useMemo5, useReducer, useReducer', useRef, useState, useState') as Exports
+import Reactix.SyntheticEvent (SyntheticEvent) as Exports
diff --git a/src/Reactix/Hooks.purs b/src/Reactix/Hooks.purs
index 49d13d326e1db5a69ede9940e7a18cb2a77f845c..bc82eb9cefa24e1c1626a5c42b1c90eb3a2a8f98 100644
--- a/src/Reactix/Hooks.purs
+++ b/src/Reactix/Hooks.purs
@@ -42,6 +42,10 @@ import Reactix.React (Context, Hooks, Ref, react)
 
 --- useState
 
+-- delay concretely typed to Effect
+delayEffect :: forall a b. a -> (a -> Effect b) -> Effect b
+delayEffect = delay
+
 -- | A state hook is a tuple of value and setter
 type State state = Tuple state ((state -> state) -> Effect Unit)
 
@@ -49,7 +53,7 @@ type State state = Tuple state ((state -> state) -> Effect Unit)
 useState :: forall s. (Unit -> s) -> Hooks (State s)
 useState s =
   hook $ \_ ->
-    pure $ currySecond $ tuple $ react ... "useState" $ [ delay unit (pure <<< s) ]
+    pure $ currySecond $ tuple $ react ... "useState" $ [ delayEffect unit (pure <<< s) ]
 
 useState' :: forall s. s -> Hooks (State s)
 useState' = useState <<< const
@@ -317,7 +321,7 @@ useLayoutEffectFn5' a b c d e f = splay5 useLayoutEffect5' f a b c d e
 
 -- | Given a function to compute an expensive value, returns the value
 useMemo :: forall t. (Unit -> t) -> Hooks t
-useMemo f = hook $ \_ -> pure $ react ... "useMemo" $ [ delay unit (\_ -> pure (f unit)) ]
+useMemo f = hook $ \_ -> pure $ react ... "useMemo" $ [ delayEffect unit (\_ -> pure (f unit)) ]
 
 -- | Like `useMemo` but takes a memo value
 useMemo1 :: forall a t. a -> (Unit -> t) -> Hooks t
@@ -346,13 +350,13 @@ unsafeUseMemo :: forall t a. (Unit -> t) -> a -> Hooks t
 unsafeUseMemo f a =
   hook $ \_ ->
     pure $ react ... "useMemo" $
-      args2 (delay unit (\_ -> pure (f unit))) (Array.from a)
+      args2 (delayEffect unit (\_ -> pure (f unit))) (Array.from a)
 
 -- useCallback
 
 -- | Given a function to compute an expensive value, returns the value
 useCallback :: forall t. (Unit -> t) -> Hooks (Effect t)
-useCallback f = hook $ \_ -> pure $ react ... "useCallback" $ [ delay unit (\_ -> pure (f unit)) ]
+useCallback f = hook $ \_ -> pure $ react ... "useCallback" $ [ delayEffect unit (\_ -> pure (f unit)) ]
 
 -- | Like `useCallback` but takes a memo value
 useCallback1 :: forall a t. a -> (Unit -> t) -> Hooks (Effect t)
diff --git a/test/Main.purs b/test/Main.purs
index 46f9359b5e776a736f9a0ac3abca2ca8fc5223d0..64fc96bb13fa34d8dad902bbe4838636d60dde62 100644
--- a/test/Main.purs
+++ b/test/Main.purs
@@ -1,12 +1,10 @@
 module Test.Main where
 
 import Prelude
+
 import Effect (Effect)
-import Test.Spec (Spec, describe, it)
-import Test.Spec.Assertions (shouldEqual)
+import Test.Spec (Spec)
 import Test.Spec.Mocha (runMocha)
-import Reactix.React.Spec
-import Test.Spec.Runner (run)
 
 import Reactix.React.Spec as ReactSpec
 
@@ -14,6 +12,5 @@ specs :: Spec Unit
 specs = do ReactSpec.spec
 
 main :: Effect Unit
-main = do --  >>= run [consoleReporter]
-  -- specs <- discoverSpecs
-  runMocha specs
+main = do
+  runMocha $ pure specs
diff --git a/test/Reactix/React/Spec.purs b/test/Reactix/React/Spec.purs
index 7dd3a737845bea38760ab6ba165d0dbf0e4206a1..63667237cf378f9731952b07d26179576b34ed23 100644
--- a/test/Reactix/React/Spec.purs
+++ b/test/Reactix/React/Spec.purs
@@ -10,10 +10,8 @@ import Data.Unfoldable (fromMaybe)
 import Effect.Aff (Aff)
 import Effect.Class ( liftEffect )
 import Effect.Ref as Ref
--- import Effect.Aff (launchAff_)
 import Test.Spec ( Spec, describe, it )
 import Test.Spec.Assertions ( shouldEqual )
--- import Test.Spec.QuickCheck (quickCheck')
 import DOM.Simple.Element as Element
 import DOM.Simple.Types (Element)
 import FFI.Simple (delay)