completed base functionality