1. A programmable HVAC controller having a controller in communication with a non-volatile memory and a random-access memory (RAM), the programmable HVAC controller comprising: a function block engine having at least one program capable of being executed by the controller, the function block engine capable of executing one or more function blocks, the function block engine being resident in the non-volatile memory; a block execution list identifying one or more of the function blocks, the block execution list being resident in the non-volatile memory; a parameter and/or variable storage space being resident in the RAM; wherein the function block engine program is executed by the controller from the non-volatile memory; and wherein the function block engine program executes those one or more function blocks identified by the block execution list.