Extract/Refactor some of the internals into the `Behavior` module.
Add the Builders.define entrypoint