this is very clean btw, I really like this approach