Final Completed version