actually that attempt at code factorisation was not ideal
error when spec and proc disagree on args or rets