Refactored plugin architecture. dat loose coupling