custom functions documented