Define the API we want to aim for

Start work on finishing the base API for defining a transition machine that we want to use.