add Vitter-like implementation