This project was pretty challenging. I probably should have looked at the example project first to get a better idea of how to structure something like this, but I figured I would better absorb the information if I tried to work it out myself. I am sure I would do this very differently if I was to start from scratch, but this is workable and it was helpful for me to do it this way. I started this in November, but with the holidays it was not continuous work. I had a workable version earlier in December, but it was missing error handling among other things and needed extensive refactoring so I thought I should spend more time on it before moving on.