object model redesign (#36 and #38)