updated syntax and semantics