add table-driven transitions with test cases