Final Version

Many improvements made