updated base functionality