accept the non-pattern match versions
initialize values to undef