improve robustness; add uniform convenience funcs