it would be easier if I had a working cabal here :(