Take responsibility out of directive, use a callback