Selecting and using Programmable Controllers