Assignment 1 (almost) done, and this time for real.

The label describing flip results is not implemented due to privious bad design which made this really hard (by which i mean ugly).