add functions(speed fix)