more robust (as in more working) parameter passing