more private fns (makes things clearer)