don't mind the evil leak, it's that or a two-step builder structure to be able to handle recursive types