Leverage generics to avoid duplicating Factory methods on children