diff --git a/database.sql b/database.sql
index 197a54232..902249f77 100644
--- a/database.sql
+++ b/database.sql
@@ -1,5 +1,5 @@
 -- ------------------------------------------
--- Friendica 3.5.3-dev (Asparagus)
+-- Friendica 3.6-dev (Asparagus)
 -- DB_UPDATE_VERSION 1234
 -- ------------------------------------------
 
@@ -1084,7 +1084,6 @@ CREATE TABLE IF NOT EXISTS `user` (
 	`account_expired` tinyint(1) NOT NULL DEFAULT 0,
 	`account_expires_on` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
 	`expire_notification_sent` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
-	`service_class` varchar(32) NOT NULL DEFAULT '',
 	`def_gid` int(11) NOT NULL DEFAULT 0,
 	`allow_cid` mediumtext,
 	`allow_gid` mediumtext,
diff --git a/doc/database/db_user.md b/doc/database/db_user.md
index e9306f8c5..7033bcc89 100644
--- a/doc/database/db_user.md
+++ b/doc/database/db_user.md
@@ -38,7 +38,6 @@ Table user
 | account_expired          |                                                                                         | tinyint(1)          | NO   |     | 0                   |                |
 | account_expires_on       | timestamp when account expires and will be deleted                                      | datetime            | NO   |     | 0001-01-01 00:00:00 |                |
 | expire_notification_sent | timestamp of last warning of account expiration                                         | datetime            | NO   |     | 0001-01-01 00:00:00 |                |
-| service_class            | service class for this account, determines what if any limits/restrictions are in place | varchar(32)         | NO   |     |                     |                |
 | def_gid                  |                                                                                         | int(11)             | NO   |     | 0                   |                |
 | allow_cid                | default permission for this user                                                        | mediumtext          | NO   |     | NULL                |                |
 | allow_gid                | default permission for this user                                                        | mediumtext          | NO   |     | NULL                |                |
diff --git a/doc/htconfig.md b/doc/htconfig.md
index cbb76a38c..8fc4483ea 100644
--- a/doc/htconfig.md
+++ b/doc/htconfig.md
@@ -37,7 +37,6 @@ Example: To set the directory value please add this line to your .htconfig.php:
 * **db_log_index_blacklist** - Blacklist of indexes that shouldn't be watched
 * **dbclean** (Boolean) - Enable the automatic database cleanup process
 * **dbclean-expire-days** (Integer) - Days after which remote items will be deleted. Own items, and marked or filed items are kept.
-* **default_service_class** -
 * **diaspora_test** (Boolean) - For development only. Disables the message transfer.
 * **directory** - The path to global directory. If not set then "http://dir.friendica.social" is used.
 * **disable_email_validation** (Boolean) - Disables the check if a mail address is in a valid format and can be resolved via DNS.
@@ -96,10 +95,6 @@ Example: To set the directory value please add this line to your .htconfig.php:
 * **worker_cooldown** - Cooldown time after each worker function call. Default value is 0 seconds.
 * **xrd_timeout** - Timeout for fetching the XRD links. Default value is 20 seconds.
 
-## service_class ##
-
-* **upgrade_link** -
-
 ## experimental ##
 
 * **exp_themes** (Boolean) - Show experimental themes as well.
diff --git a/include/Photo.php b/include/Photo.php
index 78d448fbc..a86942ee2 100644
--- a/include/Photo.php
+++ b/include/Photo.php
@@ -947,19 +947,6 @@ function store_photo(App $a, $uid, $imagedata = "", $url = "") {
 		return(array());
 	}
 
-/*
-	$r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
-		intval($uid)
-	);
-
-	$limit = service_class_fetch($uid,'photo_upload_limit');
-
-	if (($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) {
-		logger("Image exceeds personal limit of uid ".$uid, LOGGER_DEBUG);
-		return(array());
-	}
-*/
-
 	$tempfile = tempnam(get_temppath(), "cache");
 
 	$stamp1 = microtime(true);
diff --git a/include/dbstructure.php b/include/dbstructure.php
index b8cf8e57a..fd2192665 100644
--- a/include/dbstructure.php
+++ b/include/dbstructure.php
@@ -1708,7 +1708,6 @@ function db_definition() {
 					"account_expired" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
 					"account_expires_on" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE),
 					"expire_notification_sent" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE),
-					"service_class" => array("type" => "varchar(32)", "not null" => "1", "default" => ""),
 					"def_gid" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
 					"allow_cid" => array("type" => "mediumtext"),
 					"allow_gid" => array("type" => "mediumtext"),
diff --git a/include/follow.php b/include/follow.php
index c5214fe46..650eb7fc8 100644
--- a/include/follow.php
+++ b/include/follow.php
@@ -197,32 +197,6 @@ function new_contact($uid, $url, $interactive = false, $network = '') {
 		$fields = array('rel' => $new_relation, 'subhub' => $subhub, 'readonly' => false);
 		dba::update('contact', $fields, array('id' => $r[0]['id']));
 	} else {
-		// check service class limits
-
-		$r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `pending` = 0 AND `self` = 0",
-			intval($uid)
-		);
-		if (dbm::is_result($r))
-			$total_contacts = $r[0]['total'];
-
-		if (! service_class_allows($uid,'total_contacts',$total_contacts)) {
-			$result['message'] .= upgrade_message();
-			return $result;
-		}
-
-		$r = q("SELECT COUNT(`network`) AS `total` FROM `contact` WHERE `uid` = %d AND `network` = '%s' AND `pending` = 0 AND `self` = 0",
-			intval($uid),
-			dbesc($network)
-		);
-		if (dbm::is_result($r)) {
-			$total_network = $r[0]['total'];
-		}
-
-		if (! service_class_allows($uid,'total_contacts_' . $network,$total_network)) {
-			$result['message'] .= upgrade_message();
-			return $result;
-		}
-
 		$new_relation = ((in_array($ret['network'], array(NETWORK_MAIL))) ? CONTACT_IS_FRIEND : CONTACT_IS_SHARING);
 
 		// create contact record
diff --git a/include/plugin.php b/include/plugin.php
index d5bceafde..4c07f6d3f 100644
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -443,96 +443,6 @@ function install_theme($theme) {
 
 }}
 
-
-
-// check service_class restrictions. If there are no service_classes defined, everything is allowed.
-// if $usage is supplied, we check against a maximum count and return true if the current usage is
-// less than the subscriber plan allows. Otherwise we return boolean true or false if the property
-// is allowed (or not) in this subscriber plan. An unset property for this service plan means
-// the property is allowed, so it is only necessary to provide negative properties for each plan,
-// or what the subscriber is not allowed to do.
-
-
-function service_class_allows($uid,$property,$usage = false) {
-
-	if ($uid == local_user()) {
-		$service_class = $a->user['service_class'];
-	} else {
-		$r = q("SELECT `service_class` FROM `user` WHERE `uid` = %d LIMIT 1",
-			intval($uid)
-		);
-		if (dbm::is_result($r)) {
-			$service_class = $r[0]['service_class'];
-		}
-	}
-
-	if (! x($service_class)) {
-		// everything is allowed
-		return true;
-	}
-
-	$arr = get_config('service_class',$service_class);
-	if (! is_array($arr) || (! count($arr))) {
-		return true;
-	}
-
-	if ($usage === false) {
-		return ((x($arr[$property])) ? (bool) $arr['property'] : true);
-	} else {
-		if (! array_key_exists($property,$arr)) {
-			return true;
-		}
-		return (((intval($usage)) < intval($arr[$property])) ? true : false);
-	}
-}
-
-
-function service_class_fetch($uid,$property) {
-
-	if ($uid == local_user()) {
-		$service_class = $a->user['service_class'];
-	} else {
-		$r = q("SELECT `service_class` FROM `user` WHERE `uid` = %d LIMIT 1",
-			intval($uid)
-		);
-		if (dbm::is_result($r)) {
-			$service_class = $r[0]['service_class'];
-		}
-	}
-	if (! x($service_class))
-		return false; // everything is allowed
-
-	$arr = get_config('service_class',$service_class);
-	if (! is_array($arr) || (! count($arr)))
-		return false;
-
-	return((array_key_exists($property,$arr)) ? $arr[$property] : false);
-
-}
-
-function upgrade_link($bbcode = false) {
-	$l = get_config('service_class','upgrade_link');
-	if (! $l) {
-		return '';
-	}
-	if ($bbcode) {
-		$t = sprintf('[url=%s]' . t('Click here to upgrade.') . '[/url]', $l);
-	} else {
-		$t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l);
-	}
-	return $t;
-}
-
-function upgrade_message($bbcode = false) {
-	$x = upgrade_link($bbcode);
-	return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ;
-}
-
-function upgrade_bool_message($bbcode = false) {
-	$x = upgrade_link($bbcode);
-	return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ;
-}
-
 /**
  * @brief Get the full path to relevant theme files by filename
  *
diff --git a/include/user.php b/include/user.php
index a05bd831a..7eef876ad 100644
--- a/include/user.php
+++ b/include/user.php
@@ -169,11 +169,6 @@ function create_user($arr) {
 		return $result;
 	}
 
-	$default_service_class = get_config('system','default_service_class');
-	if(! $default_service_class)
-		$default_service_class = '';
-
-
 	$prvkey = $keys['prvkey'];
 	$pubkey = $keys['pubkey'];
 
@@ -182,9 +177,9 @@ function create_user($arr) {
 	$sprvkey = $sres['prvkey'];
 	$spubkey = $sres['pubkey'];
 
-	$r = q("INSERT INTO `user` ( `guid`, `username`, `password`, `email`, `openid`, `nickname`,
-		`pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone`, `service_class`, `default-location` )
-		VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC', '%s', '' )",
+	$r = q("INSERT INTO `user` (`guid`, `username`, `password`, `email`, `openid`, `nickname`,
+		`pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone`, `default-location`)
+		VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC', '')",
 		dbesc(generate_user_guid()),
 		dbesc($username),
 		dbesc($new_password_encoded),
@@ -197,8 +192,7 @@ function create_user($arr) {
 		dbesc($sprvkey),
 		dbesc(datetime_convert()),
 		intval($verified),
-		intval($blocked),
-		dbesc($default_service_class)
+		intval($blocked)
 	);
 
 	if ($r) {
diff --git a/mod/photos.php b/mod/photos.php
index 6c9f4bd66..bafd97ebe 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -832,24 +832,6 @@ function photos_post(App $a) {
 
 	$imagedata = @file_get_contents($src);
 
-
-	$limit = service_class_fetch($a->data['user']['uid'], 'photo_upload_limit');
-
-	if ($limit) {
-		$r = q("SELECT SUM(OCTET_LENGTH(`data`)) AS `total` FROM `photo` WHERE `uid` = %d AND `scale` = 0 AND `album` != 'Contact Photos'",
-			intval($a->data['user']['uid'])
-		);
-		$size = $r[0]['total'];
-
-		if (($size + strlen($imagedata)) > $limit) {
-			notice( upgrade_message() . EOL );
-			@unlink($src);
-			$foo = 0;
-			call_hooks('photo_post_end',$foo);
-			killme();
-		}
-	}
-
 	$ph = new Photo($imagedata, $type);
 
 	if (! $ph->is_valid()) {
@@ -1145,15 +1127,6 @@ function photos_content(App $a) {
 		));
 
 		$usage_message = '';
-		$limit = service_class_fetch($a->data['user']['uid'], 'photo_upload_limit');
-		if ($limit !== false) {
-
-			$r = q("SELECT SUM(`datasize`) AS `total` FROM `photo` WHERE `uid` = %d AND `scale` = 0 AND `album` != 'Contact Photos'",
-				intval($a->data['user']['uid'])
-			);
-			$usage_message = sprintf(t("You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."), $r[0]['total'] / 1024000, $limit / 1024000 );
-		}
-
 
 		// Private/public post links for the non-JS ACL form
 		$private_post = 1;
diff --git a/mod/settings.php b/mod/settings.php
index 9970d3259..e8d24f43d 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -874,12 +874,7 @@ function settings_content(App $a) {
 
 		$tpl = get_markup_template("settings_connectors.tpl");
 
-		if (! service_class_allows(local_user(),'email_connect')) {
-			$mail_disabled_message = upgrade_bool_message();
-		} else {
-			$mail_disabled_message = (($mail_disabled) ? t('Email access is disabled on this site.') : '');
-		}
-
+		$mail_disabled_message = (($mail_disabled) ? t('Email access is disabled on this site.') : '');
 
 		$o .= replace_macros($tpl, array(
 			'$form_security_token' => get_form_security_token("settings_connectors"),
diff --git a/mod/wall_attach.php b/mod/wall_attach.php
index 9f455a19f..c9d13abef 100644
--- a/mod/wall_attach.php
+++ b/mod/wall_attach.php
@@ -114,26 +114,6 @@ function wall_attach_post(App $a) {
 		killme();
 	}
 
-	$limit = service_class_fetch($page_owner_uid,'attach_upload_limit');
-
-        if ($limit) {
-		$r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
-			intval($page_owner_uid)
-		);
-		$size = $r[0]['total'];
-
-		if (($size + strlen($imagedata)) > $limit) {
-			$msg = upgrade_message(true);
-			if ($r_json) {
-				echo json_encode(array('error'=>$msg));
-			} else {
-				echo  $msg. EOL ;
-			}
-			@unlink($src);
-			killme();
-		}
-	}
-
 	$filedata = @file_get_contents($src);
 	$mimetype = z_mime_content_type($filename);
 	$hash = get_guid(64);
diff --git a/mod/wall_upload.php b/mod/wall_upload.php
index 164ca470c..cbd1b2844 100644
--- a/mod/wall_upload.php
+++ b/mod/wall_upload.php
@@ -189,29 +189,6 @@ function wall_upload_post(App $a, $desktopmode = true) {
 		killme();
 	}
 
-
-	$limit = service_class_fetch($page_owner_uid, 'photo_upload_limit');
-
-	if ($limit) {
-		$r = q("SELECT SUM(OCTET_LENGTH(`data`)) AS `total` FROM `photo`
-			WHERE `uid` = %d AND `scale` = 0
-			AND `album` != 'Contact Photos' ",
-			intval($page_owner_uid)
-		);
-		$size = $r[0]['total'];
-
-		if (($size + strlen($imagedata)) > $limit) {
-			$msg = upgrade_message(true);
-			if ($r_json) {
-				echo json_encode(array('error'=>$msg));
-			} else {
-				echo  $msg. EOL;
-			}
-			@unlink($src);
-			killme();
-		}
-	}
-
 	$imagedata = @file_get_contents($src);
 	$ph = new Photo($imagedata, $filetype);