Make all private protected as it's really not conducive to extension