make constructor protected
actually better to make it public