make Matcher immutable and separate external representation and internal for performance need
annotate structs to make more json friendly format, remove obsolete field