now uses plugin structure