Many changes and enhancements

Many changes and enhancements