Simplified threads and added observer pattern

Had a problem when discarding and updating the view as the thread
because exceedingly complicated. I then remembered the observer
pattern, researched it, and found that it would be much simpler to
implement to update the discard pile.