need to implement zig zag