fix: dependency cycle