Rethinking do_action(): Events as objects, hooks as class names | Dark Hacker News