second part of lecture 3: OOP