complex object deserialization