added shift, decoding, assign methods