modularize and compatmentalize options