I wanted to simplify the vast amount of generics, but you are right that it might make sense to implement Builder<T> at this level instead