abstract detection of argument type