changes:

  * swapping value for existing ETag (memory leak fix?);
  * more checks & logging;
  * code cleanup;
  * docs/comments update;