We also use this type of dsl. I think with static scope injection and implicit function type (
) It can be done better.