general plugin skeleton