This is a practical exercise to test your programming and design skills. You should implement the following features using Java or Groovy. There is no need to persist any data to a database or to build a user interface. You should prove your code works by unit testing it to cover the features listed below.