add scopedLock to setting immutable properties, make waterTile to drain. #96