It all works, hacked together quickly