allow user to set custom functions pre or post builtin ones