design starting to shape, need unittesting