replace mutable with fold
notes
ForgetWaitingSegments
require settings to be specified in the constructor