added pubsub.js to prepare for issue #11