factored the user application out a bit