added c++14 function return type deduction