reimplement scc