revised classes to handle notification using observers.  revised story path to maintain a list of valid cards rather than generating it each time the method is called