Maybe use lowercase letters for types here to match Haskell code?