diff --git a/apps/user_ldap/appinfo/register_command.php b/apps/user_ldap/appinfo/register_command.php
index 314c73e6c4a619ecfd54f0dfeed7333d6798c1b2..e0013c4eb7a72333fb2031457acda0b028894279 100644
--- a/apps/user_ldap/appinfo/register_command.php
+++ b/apps/user_ldap/appinfo/register_command.php
@@ -10,6 +10,17 @@ use OCA\user_ldap\lib\Helper;
 use OCA\user_ldap\lib\LDAP;
 use OCA\user_ldap\User_Proxy;
 use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\User_LDAP\lib\User\DeletedUsersIndex;
+
+$dbConnection = \OC::$server->getDatabaseConnection();
+$userMapping = new UserMapping($dbConnection);
+$helper = new Helper();
+$uBackend = new User_Proxy(
+	$helper->getServerConfigurationPrefixes(true),
+	new LDAP()
+);
+$deletedUsersIndex = new DeletedUsersIndex(
+	\OC::$server->getConfig(), $dbConnection, $userMapping);
 
 $application->add(new OCA\user_ldap\Command\ShowConfig());
 $application->add(new OCA\user_ldap\Command\SetConfig());
@@ -17,13 +28,6 @@ $application->add(new OCA\user_ldap\Command\TestConfig());
 $application->add(new OCA\user_ldap\Command\CreateEmptyConfig());
 $application->add(new OCA\user_ldap\Command\DeleteConfig());
 $application->add(new OCA\user_ldap\Command\Search());
-$userMapping = new UserMapping(\OC::$server->getDatabaseConnection());
 $application->add(new OCA\user_ldap\Command\ShowRemnants($userMapping));
-$helper = new Helper();
-$uBackend = new User_Proxy(
-	$helper->getServerConfigurationPrefixes(true),
-	new LDAP()
-);
 $application->add(new OCA\user_ldap\Command\CheckUser(
-	$uBackend, $helper, \OC::$server->getConfig()
-));
+	$uBackend, $helper, $deletedUsersIndex, $userMapping));
diff --git a/apps/user_ldap/command/checkuser.php b/apps/user_ldap/command/checkuser.php
index 96c6c8323565e77570fc8b30868efbbb7229ea11..5b1dc36c1d0ab92d6e3d7839496870dbbcca5db5 100644
--- a/apps/user_ldap/command/checkuser.php
+++ b/apps/user_ldap/command/checkuser.php
@@ -16,6 +16,7 @@ use Symfony\Component\Console\Output\OutputInterface;
 
 use OCA\user_ldap\lib\user\User;
 use OCA\User_LDAP\lib\user\Manager;
+use OCA\User_LDAP\lib\User\DeletedUsersIndex;
 use OCA\user_ldap\lib\Helper;
 use OCA\user_ldap\User_Proxy;
 
@@ -26,18 +27,22 @@ class CheckUser extends Command {
 	/** @var \OCA\User_LDAP\lib\Helper */
 	protected $helper;
 
-	/** @var \OCP\IConfig */
-	protected $config;
+	/** @var \OCA\User_LDAP\lib\User\DeletedUsersIndex */
+	protected $dui;
+
+	/** @var \OCA\User_LDAP\Mapping\UserMapping */
+	protected $mapping;
 
 	/**
 	 * @param OCA\user_ldap\User_Proxy $uBackend
 	 * @param OCA\User_LDAP\lib\Helper $helper
 	 * @param OCP\IConfig $config
 	 */
-	public function __construct(User_Proxy $uBackend, Helper $helper, \OCP\IConfig $config) {
+	public function __construct(User_Proxy $uBackend, Helper $helper, DeletedUsersIndex $dui, UserMapping $mapping) {
 		$this->backend = $uBackend;
 		$this->helper = $helper;
-		$this->config = $config;
+		$this->dui = $dui;
+		$this->mapping = $mapping;
 		parent::__construct();
 	}
 
@@ -70,10 +75,7 @@ class CheckUser extends Command {
 				return;
 			}
 
-			// TODO FIXME consolidate next line in DeletedUsersIndex
-			// (impractical now, because of class dependencies)
-			$this->config->setUserValue($uid, 'user_ldap', 'isDeleted', '1');
-
+			$this->dui->markUser($uid);
 			$output->writeln('The user does not exists on LDAP anymore.');
 			$output->writeln('Clean up the user\'s remnants by: ./occ user:delete "'
 				. $uid . '"');
@@ -86,22 +88,11 @@ class CheckUser extends Command {
 	 * checks whether a user is actually mapped
 	 * @param string $ocName the username as used in ownCloud
 	 * @throws \Exception
-	 * @return bool
+	 * @return true
 	 */
 	protected function confirmUserIsMapped($ocName) {
-		//TODO FIXME this should go to Mappings in OC 8
-		$db = \OC::$server->getDatabaseConnection();
-		$query = $db->prepare('
-			SELECT
-				`ldap_dn` AS `dn`
-			FROM `*PREFIX*ldap_user_mapping`
-			WHERE `owncloud_name` = ?'
-		);
-
-		$query->execute(array($ocName));
-		$result = $query->fetchColumn();
-
-		if($result === false) {
+		$dn = $this->mapping->getDNByName($ocName);
+		if ($dn === false) {
 			throw new \Exception('The given user is not a recognized LDAP user.');
 		}
 
diff --git a/apps/user_ldap/lib/jobs/cleanup.php b/apps/user_ldap/lib/jobs/cleanup.php
index 56fb296609d3e883e3227406d3f578ad98a6b89b..35252d6f6e5d06a5a25f9593c98b5385eeaa0dce 100644
--- a/apps/user_ldap/lib/jobs/cleanup.php
+++ b/apps/user_ldap/lib/jobs/cleanup.php
@@ -11,6 +11,8 @@ namespace OCA\User_LDAP\Jobs;
 use \OCA\user_ldap\User_Proxy;
 use \OCA\user_ldap\lib\Helper;
 use \OCA\user_ldap\lib\LDAP;
+use \OCA\User_LDAP\lib\User\DeletedUsersIndex;
+use \OCA\User_LDAP\Mapping\UserMapping;
 
 /**
  * Class CleanUp
@@ -45,6 +47,12 @@ class CleanUp extends \OC\BackgroundJob\TimedJob {
 	 */
 	protected $ldapHelper;
 
+	/** @var \OCA\User_LDAP\Mapping\UserMapping */
+	protected $mapping;
+
+	/** @var \OCA\User_LDAP\lib\User\DeletedUsersIndex */
+	protected $dui;
+
 	/**
 	 * @var int $defaultIntervalMin default interval in minutes
 	 */
@@ -92,6 +100,19 @@ class CleanUp extends \OC\BackgroundJob\TimedJob {
 		} else {
 			$this->db = \OC::$server->getDatabaseConnection();
 		}
+
+		if(isset($arguments['mapping'])) {
+			$this->mapping = $arguments['mapping'];
+		} else {
+			$this->mapping = new UserMapping($this->db);
+		}
+
+		if(isset($arguments['deletedUsersIndex'])) {
+			$this->dui = $arguments['deletedUsersIndex'];
+		} else {
+			$this->dui = new DeletedUsersIndex(
+				$this->ocConfig, $this->db, $this->mapping);
+		}
 	}
 
 	/**
@@ -104,7 +125,7 @@ class CleanUp extends \OC\BackgroundJob\TimedJob {
 		if(!$this->isCleanUpAllowed()) {
 			return;
 		}
-		$users = $this->getMappedUsers($this->limit, $this->getOffset());
+		$users = $this->mapping->getList($this->limit, $this->getOffset());
 		if(!is_array($users)) {
 			//something wrong? Let's start from the beginning next time and
 			//abort
@@ -169,33 +190,11 @@ class CleanUp extends \OC\BackgroundJob\TimedJob {
 	private function checkUser($user) {
 		if($this->userBackend->userExistsOnLDAP($user['name'])) {
 			//still available, all good
+
 			return;
 		}
 
-		// TODO FIXME consolidate next line in DeletedUsersIndex
-		// (impractical now, because of class dependencies)
-		$this->ocConfig->setUserValue($user['name'], 'user_ldap', 'isDeleted', '1');
-	}
-
-	/**
-	 * returns a batch of users from the mappings table
-	 * @param int $limit
-	 * @param int $offset
-	 * @return array
-	 */
-	public function getMappedUsers($limit, $offset) {
-		$query = $this->db->prepare('
-			SELECT
-				`ldap_dn` AS `dn`,
-				`owncloud_name` AS `name`,
-				`directory_uuid` AS `uuid`
-			FROM `*PREFIX*ldap_user_mapping`',
-			$limit,
-			$offset
-		);
-
-		$query->execute();
-		return $query->fetchAll();
+		$this->dui->markUser($user['name']);
 	}
 
 	/**
diff --git a/apps/user_ldap/lib/mapping/abstractmapping.php b/apps/user_ldap/lib/mapping/abstractmapping.php
index 2c45c6bb1c153c47f2e61aecc903d7229f13d78b..19f173577f525f6145a76751ea4d498e844ecefc 100644
--- a/apps/user_ldap/lib/mapping/abstractmapping.php
+++ b/apps/user_ldap/lib/mapping/abstractmapping.php
@@ -152,6 +152,27 @@ abstract class AbstractMapping {
 		return $this->getXbyY('owncloud_name', 'directory_uuid', $uuid);
 	}
 
+	/**
+	 * gets a piece of the mapping list
+	 * @param int $offset
+	 * @param int $limit
+	 * @return array
+	 */
+	public function getList($offset = null, $limit = null) {
+		$query = $this->dbc->prepare('
+			SELECT
+				`ldap_dn` AS `dn`,
+				`owncloud_name` AS `name`,
+				`directory_uuid` AS `uuid`
+			FROM `*PREFIX*ldap_user_mapping`',
+			$limit,
+			$offset
+		);
+
+		$query->execute();
+		return $query->fetchAll();
+	}
+
 	/**
 	 * attempts to map the given entry
 	 * @param string $fdn fully distinguished name (from LDAP)
diff --git a/apps/user_ldap/lib/user/deletedusersindex.php b/apps/user_ldap/lib/user/deletedusersindex.php
index 62abe2e10de7108a4ade8fb28cf7a1c8854613a5..6758553027982f6c98f8e6a749db42e2ee06b44a 100644
--- a/apps/user_ldap/lib/user/deletedusersindex.php
+++ b/apps/user_ldap/lib/user/deletedusersindex.php
@@ -69,6 +69,7 @@ class DeletedUsersIndex {
 		foreach($deletedUsers as $user) {
 			$userObjects[] = new OfflineUser($user, $this->config, $this->db, $this->mapping);
 		}
+		$this->deletedUsers = $userObjects;
 
 		return $this->deletedUsers;
 	}
@@ -97,4 +98,12 @@ class DeletedUsersIndex {
 		}
 		return false;
 	}
+
+	/**
+	 * marks a user as deleted
+	 * @param string ocName
+	 */
+	public function markUser($ocName) {
+		$this->config->setUserValue($ocName, 'user_ldap', 'isDeleted', '1');
+	}
 }
diff --git a/apps/user_ldap/tests/jobs/cleanup.php b/apps/user_ldap/tests/jobs/cleanup.php
index 3aa9a4a43c524c5e03ee40f380c0ced5695b18be..642bad571342633f5b922b982aab64b1429deaa3 100644
--- a/apps/user_ldap/tests/jobs/cleanup.php
+++ b/apps/user_ldap/tests/jobs/cleanup.php
@@ -15,6 +15,10 @@ class Test_CleanUp extends \PHPUnit_Framework_TestCase {
 			$this->getMockBuilder('\OCA\user_ldap\User_Proxy')
 				->disableOriginalConstructor()
 				->getMock();
+		$mocks['deletedUsersIndex'] =
+			$this->getMockBuilder('\OCA\user_ldap\lib\user\deletedUsersIndex')
+				->disableOriginalConstructor()
+				->getMock();
 		$mocks['ocConfig']    = $this->getMock('\OCP\IConfig');
 		$mocks['db']          = $this->getMock('\OCP\IDBConnection');
 		$mocks['helper']      = $this->getMock('\OCA\user_ldap\lib\Helper');