Yeah, but I don't think it's worth making it generic as I think its an
unnecessarily complex pattern. Making generic would just make it more
complex. So this is really a compromise.