almost all compile except for some problem with circular dependencies