Im learning about the concept as Ive never used it before. But it seems like extra boilerplate with no real benefit, other than making it harder for calling methods to screw something up.