Added some programmables features that we want

Should probably be split across multiple files.