implemented all challenge requirements