Added a macro for the first level abstraction.