Final Version - 95%