updated Final Version