Factor out the idea of a watermark into a class