nit: probably should not have the selector in here, but probably ok to land with for now. I'm still not sure what the best thing to do in these cases, I'm a fan of pulling in the system core lib, and getting the selector from that - but not everyone is a fan of that.