adding base functionality