Writing a character builder dsl