some to change to make it more oop