Finished

There's space for improvement but it's a good enough prototype IMHO.