final_verson(without function)