smaller and faster, but still not good enough