Updating with better OOP design