Bringing oo_refactor branch up to date with master.