Now uses classes and multiple inheritance