diff --git a/Language/ImProve.hs b/Language/ImProve.hs
--- a/Language/ImProve.hs
+++ b/Language/ImProve.hs
@@ -518,13 +518,13 @@
 
 -- | Verify a program.
 --
--- > verify pathToYices maxK program
+-- > verify pathToYices program
 verify :: FilePath -> Stmt () -> IO ()
 verify yices program = V.verify yices stmt
   where
   (_, _, stmt) = evalStmt 0 [] program
 
--- | Generate C code.
+-- | Generate C and Simulink code.
 code :: Name -> Stmt () -> IO ()
 code name program = C.code name stmt
   where
diff --git a/Language/ImProve/Code.hs b/Language/ImProve/Code.hs
--- a/Language/ImProve/Code.hs
+++ b/Language/ImProve/Code.hs
@@ -136,7 +136,7 @@
 -- Simulink generation.
 codeMdl :: Name -> Statement -> IO ()
 codeMdl name stmt = do
-  net <- execStateT all (Netlist 0 [] paths env [] [])
+  net <- execStateT all (Netlist 0 [] paths env [] []) >>= return . removeNullEffect
   writeFile (name ++ ".mdl") $ show $ mdl name $ (mdlBlocks $ blocks net) ++ (mdlLines $ nets net)
   where
   vars = stmtVars stmt
@@ -420,4 +420,17 @@
   Mux'           -> f "Switch"             ["Criteria" :- "u2 ~= 0"]
   where
   f typ args = mdlBlock typ name args
+
+isSrc :: Block -> Bool
+isSrc a = case a of
+  Outport _ -> False
+  Assertion -> False
+  _         -> True
+
+removeNullEffect :: Netlist -> Netlist
+removeNullEffect net = if null unused then net else removeNullEffect net { blocks = blocks', nets = nets' }
+  where
+  unused = [ name | (name, block) <- blocks net, isSrc block, not $ any (\ (n, _) -> name == n) $ nets net ]
+  blocks' = [ (name, block) | (name, block) <- blocks net, not $ elem name unused ]
+  nets' = [ (src, (dest, port)) | (src, (dest, port)) <- nets net, not $ elem dest unused ]
 
diff --git a/improve.cabal b/improve.cabal
--- a/improve.cabal
+++ b/improve.cabal
@@ -1,5 +1,5 @@
 name:    improve
-version: 0.3.0
+version: 0.3.1
 
 category: Language, Formal Methods, Embedded
 
