add timestamps and water() method