Redisigned class structure