cleaned up user flow