Pedantic, but is there a reason for not matching the typename arg and the name of the class you are assigning to?