just curious: is the cast `(T)` really needed here? Isn't the method `init()` a generic?