Why did you decide to make this private? I can imagine users wanting to subclass it.