To avoid circular "USE" references, I had to break a few source files into smaller units