protected function adjustPosition($op, array $managers)
    {
        if (count($managers) == 0) {
            return null;
        }

        $this->checkValidOperation($op);

        try {
            $result = null;
            $this->blockRepository->startTransaction();
            foreach ($managers as $blockManager) {
                $block = $blockManager->get();
                $contentPosition = $block->getContentPosition();
                $position = ($op == 'add') ? $contentPosition + 1 : $contentPosition - 1;
                $result = $this->blockRepository
                                ->setRepositoryObject($block)
                                ->save(array("ContentPosition" => $position));

                if (false === $result) {
                    break;
                }
            }

            if (false !== $result) {
                $this->blockRepository->commit();

                return $result;
            }

            $this->blockRepository->rollBack();

            return $result;
        } catch (\Exception $e) {
            $this->blockRepository->rollBack();

            throw $e;
        }
    }