remove unnecessary liftIO
import System.Console.Haskeline using qualified import
use Control.Monad.Error to handle errors (again)
clean up