diff --git a/planetstack/model_policies/model_policy_User.py b/planetstack/model_policies/model_policy_User.py
index 6118a7b..593ba9d 100644
--- a/planetstack/model_policies/model_policy_User.py
+++ b/planetstack/model_policies/model_policy_User.py
@@ -1,32 +1,32 @@
 from core.models import *
 
 def handle(user):
-	from core.models import Deployment,SiteDeployments,UserDeployments
+	from core.models import Controller,ControllerSites,ControllerUsers
 	from collections import defaultdict
-	deployments = Deployment.objects.all()
-	site_deployments = SiteDeployments.objects.all()
-	site_deploy_lookup = defaultdict(list)
-	for site_deployment in site_deployments:
-		site_deploy_lookup[site_deployment.site].append(site_deployment.deployment)
+	controllers = Controller.objects.all()
+	controller_sitements = ControllerSites.objects.all()
+	controller_site_lookup = defaultdict(list)
+	for controller_sitement in controller_sitements:
+		controller_site_lookup[controller_sitement.site].append(controller_sitement.controller)
 
-	user_deploy_lookup = defaultdict(list)
-	for user_deployment in UserDeployments.objects.all():
-		user_deploy_lookup[user_deployment.user].append(user_deployment.deployment)
+	controller_user_lookup = defaultdict(list)
+	for controller_userment in ControllerUsers.objects.all():
+		controller_user_lookup[controller_userment.user].append(controller_userment.controller)
    
-	all_deployments = Deployment.objects.filter() 
+	all_controllers = Controller.objects.filter() 
 	if user.is_admin:
-		# admins should have an account at all deployments
-		expected_deployments = deployments
+		# admins should have an account at all controllers
+		expected_controllers = controllers
 	else:
-		# normal users should have an account at their site's deployments
-		#expected_deployments = site_deploy_lookup[user.site]
-		# users are added to all deployments for now
-		expected_deployments = deployments        
+		# normal users should have an account at their site's controllers
+		#expected_controllers = controller_site_lookup[user.site]
+		# users are added to all controllers for now
+		expected_controllers = controllers        
 
-	for expected_deployment in expected_deployments:
-		if not user in user_deploy_lookup or \
-		  expected_deployment not in user_deploy_lookup[user]: 
+	for expected_controller in expected_controllers:
+		if not user in controller_user_lookup or \
+		  expected_controller not in controller_user_lookup[user]: 
 			# add new record
-			ud = UserDeployments(user=user, deployment=expected_deployment)
+			ud = ControllerUsers(user=user, controller=expected_controller)
 			ud.save()    
 
