a bit more flexibility with generic defaults