added many funcs