Renamed class to reflect semantics better.
Added unary
Added repetition