add plugin mechanism