Added parts 1-3.