add ui plugin and refactor plugin mixin