Begun move to to the faster version by @tmthrgd