work on error handling completed. it should more or less watertight now. if a shop module returns null, main.py will not try and then fail to process the non-existent data. this means that the failure of one shop module will not bring the program down. also added some new success and failure messages.