finish the second version