fastest version so far - still more possible