Btw why are you using `abort` all over the place? I guess, in a lot of cases `error` would be okay as well, and that would definitely improve user experience.