Change methods and variables from private to protected to allow class to be extended.
Require parameter to match null type