better error handling, select control