test driven developed classes for the items, refactored with the tests