use list syntax
use strict versions of Map and StateT, some refactoring (stylish-haskell etc)