diff --git a/disposable.cabal b/disposable.cabal
--- a/disposable.cabal
+++ b/disposable.cabal
@@ -1,7 +1,7 @@
 name:                disposable
-version:             0.2.0.3
+version:             0.2.0.4
 synopsis:            Allows storing different resource-releasing actions together.
-description:         SomeDisposable aloows storing different resource releasing actions togther in a container.
+description:         SomeDisposable allows storing different resource releasing actions togther in a container.
                      This library is useful for queueing up GHCJS.Foreign.Callback together to be released
                      after a new rendering frame.
 homepage:            https://github.com/louispan/disposable#readme
diff --git a/src/Control/Disposable.hs b/src/Control/Disposable.hs
--- a/src/Control/Disposable.hs
+++ b/src/Control/Disposable.hs
@@ -13,11 +13,15 @@
 import Data.Semigroup
 import qualified GHC.Generics as G
 import qualified GHCJS.Foreign.Callback as J
+import qualified GHCJS.Types as J
 
 -- | A 'Disposable' is something with some resources to release
 class Disposable a where
     dispose :: a -> IO ()
 
+instance Disposable (J.Callback a) where
+    dispose = J.releaseCallback
+
 -- | Allows storing 'Disposable's in a heterogenous container
 data SomeDisposable where
     DisposeNone :: SomeDisposable
@@ -50,11 +54,23 @@
   default disposing :: (G.Generic a, GDisposing (G.Rep a)) => a -> SomeDisposable
   disposing x = DisposeList . D.toList . gDisposing $ G.from x
 
-instance Disposable (J.Callback a) where
-    dispose = J.releaseCallback
+instance Disposing SomeDisposable where
+    disposing = id
 
 instance Disposing (J.Callback a) where
     disposing = Dispose
+
+instance Disposing Int where
+    disposing _ = DisposeNone
+
+instance Disposing J.JSString where
+    disposing _ = DisposeNone
+
+instance Disposing J.JSVal where
+    disposing _ = DisposeNone
+
+instance Disposing a => Disposing (D.DList a) where
+    disposing xs = DisposeList $ disposing <$> D.toList xs
 
 -- | Generic instance basically traverses the data type structure
 -- and expects the values to be all instances of 'Disposing'
