Well, I see why you choose SuperPad, and it is annoying that ycp doesn't have optional arguments, but to share code I think you should also change implementation of Pad to call SuperPad(text,length," ",`right)