In which we discuss a circular dependency issue we got into, how we got out of it, and some general software principles that we applied along the way.