update drain()