To me this looks like a bad abstraction that adds plenty of overhead for no significant gain.