Reshaped the class system and created several classes