diff --git a/flowsim.cabal b/flowsim.cabal
--- a/flowsim.cabal
+++ b/flowsim.cabal
@@ -1,5 +1,5 @@
 Name:           flowsim
-Version:        0.3.4
+Version:        0.3.5
 License:        GPL-2
 License-file:   COPYING
 Cabal-Version:  >= 1.6
diff --git a/src/Duplicator.hs b/src/Duplicator.hs
--- a/src/Duplicator.hs
+++ b/src/Duplicator.hs
@@ -4,21 +4,27 @@
 
 import System.IO
 import System.Environment (getArgs)
-
+import Control.Monad (when)
 import Bio.Sequence.Fasta
+
 import Statistics
 
 main :: IO ()
 main = do
   args <- getArgs
-  case args of [p] -> hReadFasta stdin >>= evalRandIO . dup (read p) >>= hWriteFasta stdout
-               _ -> error "Usage: duplicator pr\n   where pr is the probability of recursively duplicating a sequence"
+  case args of 
+       (p:rest) -> do
+           let p' = read p 
+               i = case rest of [] -> hReadFasta stdin 
+                                [f] -> readFasta f
+           when (p'<=0 || p'>=1) $ error "Probability should be between 0 and 1"
+           i >>= evalRandIO . dup p' >>= hWriteFasta stdout
+       _ -> error "Usage: duplicator pr\n   where pr is the (recursive) probability of duplicating a sequence"
 
 dup :: RandomGen g => Double -> [Sequence] -> Rand g [Sequence]
 dup p (x:xs) = do
   r <- getRandomR (0,1)
-  if r < p 
-    then dup p (x:x:xs)
-    else do ys <- dup p xs
-            return (x:ys)
+  ys <- if r < p then dup p (x:xs)
+        else dup p xs
+  return (x:ys)
 dup _ [] = return []         
diff --git a/src/Version.hs b/src/Version.hs
--- a/src/Version.hs
+++ b/src/Version.hs
@@ -1,4 +1,4 @@
 module Version where
 
 version :: String
-version = " v0.3.3, copyright 2010-2012 Ketil Malde"
+version = " v0.3.5, copyright 2010-2012 Ketil Malde"
