framework: move funcs