added interfaces, updates tests, updated docblocks