recursive object saving