Many improvements and changes