Use control instead of liftBaseWith and restoreM