semantic logic: keep track of characters