factor out kleisli
clean up