Many improvements, see CHANGELOG