advance OOP concepts are hard to understand