adding support to override and extend basic functions