implementing user cases