publisher and subscriber classes
observer pattern adopted, serial communication moved to separate class