OOP Fundamental principles part one