Mostly working code

With exception to saveInBackground
This is to just ensure that the user's previous puzzle isn't lost (the way materials are stored is that there can be multiple puzzles for them - I think?)