improve object model