No unnecessary type casting needed with new factory constructor
Fancy words make me happy :I