Many changes, see details