A few changes to make the method more useful.
Added join methods, will revisit joins at a later point when I need them.
Added ability to create composite objects