updated for GHC 7.8