corrected the draft and added more info about the implementation