add 2D cyclic implementation