adds tests for item properties, refactors various pieces