context extends spec by default and template.open accepts a callback