design the backbone of the decoder