refactoring some good core funcs from rev control