complete base functionality