Made constructor protected to enable subclassing