diff --git a/avr-shake.cabal b/avr-shake.cabal
--- a/avr-shake.cabal
+++ b/avr-shake.cabal
@@ -1,5 +1,5 @@
 name:                   avr-shake
-version:                0.0.0.1
+version:                0.0.0.2
 stability:              experimental
 
 cabal-version:          >= 1.6
@@ -23,4 +23,4 @@
   hs-source-dirs:       src
   exposed-modules:      Development.Shake.AVR
   build-depends:        base >= 3 && <5,
-                        shake == 0.10.*
+                        shake >= 0.10 && < 0.12
diff --git a/src/Development/Shake/AVR.hs b/src/Development/Shake/AVR.hs
--- a/src/Development/Shake/AVR.hs
+++ b/src/Development/Shake/AVR.hs
@@ -7,7 +7,6 @@
     ) where
 
 import Development.Shake
-import Development.Shake.Command
 
 gccDeps cc cFlags src = do
     Stdout cppOut <- command [Traced ""] cc (cFlags ++ ["-M", "-MG", "-E", src])
@@ -36,7 +35,7 @@
     writeFileChanged out lss
 
 avrdude = avrdude' "avrdude"
-avrdude' avrdudeBin flags hex usbPort = do
+avrdude' avrdudeBin mem flags hex port = do
     alwaysRerun
-    need [usbPort, hex]
-    system' avrdudeBin (flags ++ ["-P", usbPort, "-Uflash:w:" ++ hex])
+    need [hex]
+    system' avrdudeBin (flags ++ ["-P", port, "-U" ++ mem ++ ":w:" ++ hex])
