ragel wip
redo wip