cleaning up and re-structuring
added support for multi-object property