added type deduction for all types except abstract data