diff --git a/Language/Atom/Common.hs b/Language/Atom/Common.hs
--- a/Language/Atom/Common.hs
+++ b/Language/Atom/Common.hs
@@ -60,19 +60,22 @@
 -- | Debounces a boolean given an on and off time (ticks) and an initial state.
 debounce :: Name -> E Word64 -> E Word64 -> Bool -> E Bool -> Atom (E Bool)
 debounce name onTime offTime init a = atom name $ do
-  x     <- bool "x" init
-  offTimer <- timer "offTimer"
-  onTimer  <- timer "onTimer"
+  last  <- bool "last" init
+  out   <- bool "out"  init
+  timer <- timer "timer"
   atom "on" $ do
-    cond a
-    startTimer offTimer offTime
+    cond $ a &&. not_ (value last)
+    startTimer timer onTime
+    last <== a
   atom "off" $ do
-    cond $ not_ a
-    startTimer onTimer onTime
+    cond $ not_ a &&. value last
+    startTimer timer offTime
+    last <== a
   atom "set" $ do
-    cond $ timerDone onTimer &&. a ||. timerDone offTimer &&. not_ a
-    x <== a
-  return $ value x
+    cond $ a ==. value last
+    cond $ timerDone timer
+    out <== value last
+  return $ value out
 
 
 -- | 1-D lookup table.  X values out of table range are clipped at end Y values.
diff --git a/Language/Atom/Expressions.hs b/Language/Atom/Expressions.hs
--- a/Language/Atom/Expressions.hs
+++ b/Language/Atom/Expressions.hs
@@ -192,7 +192,7 @@
   BWAnd   :: IntegralE a => E a -> E a -> E a
   BWOr    :: IntegralE a => E a -> E a -> E a
   Shift   :: IntegralE a => E a -> Int -> E a
-  Eq      :: (EqE a, OrdE a) => E a -> E a -> E Bool
+  Eq      :: EqE a  => E a -> E a -> E Bool
   Lt      :: OrdE a => E a -> E a -> E Bool
   Mux     :: E Bool -> E a -> E a -> E a
   F2B     :: E Float  -> E Word32
@@ -560,11 +560,11 @@
 imply a b = not_ a ||. b
 
 -- | Equal.
-(==.) :: (EqE a, OrdE a) => E a -> E a -> E Bool
+(==.) :: EqE a => E a -> E a -> E Bool
 (==.) = Eq
 
 -- | Not equal.
-(/=.) :: (EqE a, OrdE a) => E a -> E a -> E Bool
+(/=.) :: EqE a => E a -> E a -> E Bool
 a /=. b = not_ (a ==. b)
 
 -- | Less than.
diff --git a/Language/Atom/Unit.hs b/Language/Atom/Unit.hs
--- a/Language/Atom/Unit.hs
+++ b/Language/Atom/Unit.hs
@@ -92,8 +92,8 @@
   test <- test
   putStrLn $ "running test " ++ name test ++ " ..."
   hFlush stdout
-  (_, _, _, coverageNames, _) <- compile "atom_unit_test" defaults { cCode = prePostCode test, cRuleCoverage = False } $ testbench test
-  (exit, out, err) <- readProcessWithExitCode "gcc" (["-Wall", "-g", "-o", "atom_unit_test"] ++ [ "-i" ++ i | i <- includes test ] ++ modules test ++ ["atom_unit_test.c"]) ""
+  (_, _, _, coverageNames, _) <- compile "atom_unit_test" defaults { cStateName = name test, cCode = prePostCode test, cRuleCoverage = False } $ testbench test
+  (exit, out, err) <- readProcessWithExitCode "gcc" (["-Wall", "-g", "-o", "atom_unit_test"] ++ [ "-I" ++ i | i <- includes test ] ++ modules test ++ ["atom_unit_test.c"]) ""
   let file = name test ++ ".log"
   case exit of 
     ExitFailure _ -> do
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,3 +1,8 @@
+atom 1.0.1    03/17/2010
+
+- Fixed debounce bug.
+- Fixed Unit -I bug, change state name to test name.
+
 atom 1.0.0    02/13/2010
 
 - Set C99 types (stdbool.h, stdint.h).  Removed cType from code configuration.
diff --git a/atom.cabal b/atom.cabal
--- a/atom.cabal
+++ b/atom.cabal
@@ -1,5 +1,5 @@
 name:    atom
-version: 1.0.0
+version: 1.0.1
 
 category: Language
 
@@ -57,5 +57,6 @@
     ghc-options:       -W
 
 source-repository head
-    type:     darcs
-    location: http://patch-tag.com/r/tomahawkins/atom/pullrepo
+    type:     git
+    location: git://github.com/tomahawkins/atom.git
+
