Tested Final Version