API + cleaner errors + multiple listeners per process