added circular dependency protection, lots of lazy sunday arvo refactoring, and a version bump.