splitting into independent plugins