Updated with tests for all classes