Many improvements and even some speed enhancements