[#364] first pass at re-desiging object entities

this completely untested and unused for now (new objects), this is just
a quick source code split to match with the agreed structure.