implementing user logic