fixed circular dependency hell