[TASK] Factor out generic methods into abstract command controller so
 other extensions can use them.