user functionality
changes mostly for user functionality