made the modifier system more extensible, lots of optimization