refactor all
add plugin abstract class and controller abstract class
fix ignore