we need to implement MEM and DEBUG first to support low level operations