Split plugin into components