Reverted changes to @SupressWarnings for compiler's sake
Added infrastructure for extensibility