base functionality added