Many changes. Extra documentation.