OMG Ruby has a built in Observable module
add observer pattern description