parts 1 & 2 complete, much code consultation required