create abstract plugin