Rebuilt with object oriented structure