make hf::&& and hf::|| more understandable

genericity wasn't useful anyway, here, and this is easier to read and
follow.