use non-dependent functions