Added description and input validation for everything.