add custom functions