functional but would like to abstract away user model call