constructing languages