create programmatic hooks