Tidy up rules and provide `mapM_