Ditch duplication and bake-in flexibility with generic programming