first try for operational semantics