organize module so it can be injected to module after module is defined
separate picklist from select to avoid potential directive conflict