extended the language to support multiple keys per assignment and add ranges