3rd Iteration

Added lots of changes