It's good. I think the expressions should be hidden at the start or generate dynamically, you can read them from source at the start. I like the idea, not quite "destructive", though.