Overhauled class structure