self-referential requirements are kinda weird