implament circular reference deserialize