added plenty of user functionality