first pass at abstract model + operational semantics