bug fixed: circular dependency