improve oop system