added type deduction