mark some fns private to avoid confusion