add new feature that moveup/down, top/bottom operations could be specified by the user