client with dynamic view (NB: hash function is intentionally screwed)