open method to be override in subclass