general funcs updated again