added more semantics