redesigns class structure