added the base functionality