made description non-mandatory and refactored some code