Many improvements and bug fixes.