Added: OOP for easier generalization later