working simulation oop