maybe call this #with_mode ?