added cabal functionality