New OOP model, code refactor,and etc