design patterns and oop added