First pass at creating plugin architecture