added oop structure