BTW one possible downside is the attribute declaration will look like a normal bit of code...
<%@ val foo : String = "blah" %>
<% val foo : String = "blah" %>
I guess the @ is the biggie.
BTW if we declare a var, we should maybe make sure we call context.setAttribute("foo", foo) at the end of the template to output the new value back to the context