better circular references support