methods to be implemented