resolve circular dependency