diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,16 @@
 # hevm changelog
 
+## 0.20 - 2018-10-27
+ - Parse constructor inputs from Solidity AST
+
+## 0.19 - 2018-10-09
+ - Enable experimental 'cheat' address, allowing for modification of the
+   EVM environment from within the tests. Currently just the block
+   timestamp can be adjusted.
+
+## 0.18 - 2018-10-09
+ - Fix [duplicate address bug](https://github.com/dapphub/dapptools/issues/70)
+
 ## 0.17 - 2018-10-05
  - Semigroup/Monoid fix
 
diff --git a/hevm.cabal b/hevm.cabal
--- a/hevm.cabal
+++ b/hevm.cabal
@@ -1,7 +1,7 @@
 name:
   hevm
 version:
-  0.17
+  0.20
 synopsis:
   Ethereum virtual machine evaluator
 description:
diff --git a/src/EVM.hs b/src/EVM.hs
--- a/src/EVM.hs
+++ b/src/EVM.hs
@@ -871,6 +871,10 @@
              ) ->
               case xTo of
                 n | n > 0 && n <= 8 -> precompiledContract
+                n | num n == cheatCode ->
+                  do
+                    assign (state . stack) xs
+                    cheat (xInOffset, xInSize) (xOutOffset, xOutSize)
                 _ ->
                   let
                     availableGas = the state gas
@@ -1110,6 +1114,7 @@
           initialContract createdCode
             & set storage (view storage now)
             & set balance (view balance now)
+            & set nonce   (view nonce now)
 
 resetState :: EVM ()
 resetState = do
@@ -1168,6 +1173,9 @@
 -- * Cheat codes
 
 -- The cheat code is 7109709ecfa91a80626ff3989d68f67f5b1dd12d.
+-- Call this address using one of the cheatActions below to do
+-- special things, e.g. changing the block timestamp. Beware that
+-- these are necessarily hevm specific.
 cheatCode :: Addr
 cheatCode = num (keccak "hevm cheat code")
 
diff --git a/src/EVM/Solidity.hs b/src/EVM/Solidity.hs
--- a/src/EVM/Solidity.hs
+++ b/src/EVM/Solidity.hs
@@ -17,6 +17,7 @@
   , abiMap
   , eventMap
   , contractName
+  , constructorInputs
   , creationCode
   , makeSrcMaps
   , readSolc
@@ -76,6 +77,7 @@
   , _runtimeCode      :: ByteString
   , _creationCode     :: ByteString
   , _contractName     :: Text
+  , _constructorInputs :: [(Text, AbiType)]
   , _abiMap           :: Map Word32 Method
   , _eventMap         :: Map W256 Event
   , _runtimeSrcmap    :: Seq SrcMap
@@ -229,6 +231,8 @@
       let
         theRuntimeCode = toCode (x ^?! key "bin-runtime" . _String)
         theCreationCode = toCode (x ^?! key "bin" . _String)
+        abis =
+          toList ((x ^?! key "abi" . _String) ^?! _Array)
       in (s, SolcContract {
         _runtimeCode      = theRuntimeCode,
         _creationCode     = theCreationCode,
@@ -241,10 +245,19 @@
           fromMaybe
             (error "JSON lacks abstract syntax trees.")
             (preview (ix (Text.split (== ':') s !! 0) . key "AST") asts),
+
+        _constructorInputs =
+          let
+            isConstructor y =
+              "constructor" == y ^?! key "type" . _String
+          in
+            case filter isConstructor abis of
+              [abi] -> map parseMethodInput (toList (abi ^?! key "inputs" . _Array))
+              [] -> [] -- default constructor has zero inputs
+              _  -> error "strange: contract has multiple constructors",
+
         _abiMap       = Map.fromList $
           let
-            abis =
-              toList ((x ^?! key "abi" . _String) ^?! _Array)
             relevant =
               filter (\y -> "function" == y ^?! key "type" . _String) abis
           in flip map relevant $
diff --git a/src/EVM/TTY.hs b/src/EVM/TTY.hs
--- a/src/EVM/TTY.hs
+++ b/src/EVM/TTY.hs
@@ -11,6 +11,7 @@
 import Brick.Widgets.List
 
 import EVM
+import EVM.ABI (abiTypeSolidity)
 import EVM.Concrete (Word (C))
 import EVM.Dapp (DappInfo, dappInfo)
 import EVM.Dapp (dappUnitTests, dappSolcByName, dappSolcByHash, dappSources)
@@ -531,11 +532,14 @@
               [ borderWithLabel (txt "Contract information") . padBottom Max . padRight (Pad 2) $ vBox
                   [ txt "Name: " <+> txt (contractNamePart (view contractName solc))
                   , txt "File: " <+> txt (contractPathPart (view contractName solc))
-                    , txt " "
-                    , txt "Public methods:"
-                    , vBox . flip map (sort (Map.elems (view abiMap solc))) $
-                        \method -> txt ("  " <> view methodSignature method)
-                    ]
+                  , txt " "
+                  , txt "Constructor inputs:"
+                  , vBox . flip map (view constructorInputs solc) $
+                      \(name, abiType) -> txt ("  " <> name <> ": " <> abiTypeSolidity abiType)
+                  , txt "Public methods:"
+                  , vBox . flip map (sort (Map.elems (view abiMap solc))) $
+                      \method -> txt ("  " <> view methodSignature method)
+                  ]
                 , borderWithLabel (txt "Storage slots") . padBottom Max . padRight Max $ vBox
                     (map txt (storageLayout dapp solc))
                 ]
