Completed the first pass at this.