Ways of dealing with circular references