use inferred param types