working, but 20x slower