added requirements.txt and moved arg validation to user class