implement reservoid part