much better; still not perfect