with classes and cyclic referencing