Refactored to eliminate circularities