Part 1 by xmikex and Jamie Angus.

Part 2 by Andrew Drozd.