modularize; fix chivselect