Final version. Completed.