converted DEFINE to take a full function as block; disheaded functions were just weird.