Almost complete rewrite for new objects