Chapter 3. Writing your own signals