Refactor objects

I hope I haven't broken anything. Anyone wish to confirm this?
We already know the size from comparing the starting pointer to the end pointer. In the original code it then basically duplicated this when making the object_copy. I kept it in at the time as I wanted to make sure my object_copy was performing correctly. (it wasn't for the longest time)