I'm sorry but i think your way of writing this function increase complexity without providing any other benefits :)
But i think, independed rule make sense so i'll try to rewrite code this way