implements override functions