almost finish the required classes