You can use custom events but using signals is simpler. They use the event mechanism behind the scenes, so the result is the same, just less coding.