need to think about class structure