added constructor type deduction