redesigned api with a descriptive way to create transitions.