major cleanup
minor refactoring
rearrange methods
add some new apis from js-verbalexpressions
simplify or