Why not calculate the default kernel size as a method defined for each subclass?  I'm not saying there shouldn't be separate classes--just that there seems to be a lot of boilerplate that could be abstracted away.