This paper presents an overview of ongoing research that aims to develop a programming language for high level control of cognitive robots and software agents. The language is called 3APL and its formal specification is already presented elsewhere. We explain 3APL programming constructs and its existing interpreter. We argue that a part of the deliberation cycle, which is fixed in the interpreter, should be programmable. We discuss a set of programming constructs that can be used to program some aspects of the deliberation cycle.