Basic save state functionality, no loading.

So what does including the random height actually do? i.e. `Work out why random height needed for button <to not explode?>`