Updated to include requirements of the assignment