adding builders, postprocessing and segregating template parameters