Add GHCi test; refactor