rewriting typedef to not use typename