1. An apparatus, comprising: one or more hardware components having device drivers; a master part list of said hardware components; a free part list comprising a first subset of said hardware components; a used part list comprising a second subset of said hardware components; an application layer adapted to receive a user input requiring a response from the apparatus; one or more hardware independent definitions for the one or more hardware components; a compiler comprising a first component configured to build one or more plans using said hardware independent definitions to identify at least one of the hardware independent definitions needed to fulfill the response, in response to an input from the application layer, said plans capable of interfacing with said device drivers; and a scheduler configured to allocate said hardware components to correspond to said plans, wherein said scheduler reserves a portion of said first subset of said hardware components in said free part list when allocating resources and then moves said portion to said second subset in said used part list.