Turns out we can simplify and reuse a lot of code :o