Building Blocks for Language Workbenches