lesson 3, pub/sub