diff --git a/opentrafficshaper/plugins/statistics/statistics.pm b/opentrafficshaper/plugins/statistics/statistics.pm
index 9d357a7505513ca6444827cd6a294b2c213022f8..3f2fe80a9ce6d3b9cbcc0813034c7afe5567722b 100644
--- a/opentrafficshaper/plugins/statistics/statistics.pm
+++ b/opentrafficshaper/plugins/statistics/statistics.pm
@@ -639,55 +639,55 @@ sub getLastStats
 }
 
 
-# Return stats based on a LID
-sub getStatsByLID
+# Return stats by SID
+sub getStatsBySID
 {
-	my $lid = shift;
+	my $sid = shift;
 
+	return  _getStatsBySID($sid);
+}
 
-	# Max entries
-	my $entriesLeft = 100;
 
-	# Grab stats ID from LID
-	my $sid = getSIDFromLID($lid);
-	if (!defined($sid)) {
-		return { };
-	}
+# Return basic stats by SID
+sub getStatsBasicBySID
+{
+	my $sid = shift;
 
-	return _getStatsBySID($sid);
+	return  _getStatsBasicBySID($sid);
 }
 
 
-# Return stats based on an interface
-sub getStatsByClass
+# Get the stats ID from Class ID
+sub getSIDFromCID
 {
 	my ($iface,$cid) = @_;
 
 
-	# Grab stats ID from LID
-	my $sid = getSIDFromCID($iface,$cid);
-	if (!defined($sid)) {
-		return { };
-	}
-
-	return _getStatsBySID($sid);
+	my $identifier = "Class:$iface:$cid";
+	return _getSIDFromIdentifier($identifier);
 }
 
 
-# Get the stats ID from Class ID
-sub getSIDFromCID
+# Set the stats ID from Class ID
+sub setSIDFromCID
 {
 	my ($iface,$cid) = @_;
 
+
 	my $identifier = "Class:$iface:$cid";
-	return _getSIDFromIdentifier($identifier);
+	my $sid = _getSIDFromIdentifier($identifier);
+	if (!defined($sid)) {
+		$sid = _setSIDFromIdentifier($identifier);
+	}
+	return $sid;
 }
 
 
 # Get the stats ID from a LID
 sub getSIDFromLID
 {
-	my ($lid) = @_;
+	my $lid = shift;
+
 
 	if (defined(my $username = getLimitUsername($lid))) {
 		my $identifier = "Username:$username";
@@ -698,6 +698,51 @@ sub getSIDFromLID
 }
 
 
+# Set the stats ID from a LID
+sub setSIDFromLID
+{
+	my $lid = shift;
+
+
+	if (defined(my $username = getLimitUsername($lid))) {
+		my $identifier = "Username:$username";
+		my $sid = _getSIDFromIdentifier($identifier);
+		if (!defined($sid)) {
+			$sid = _setSIDFromIdentifier($identifier);
+		}
+		return $sid;
+	}
+
+	return undef;
+}
+
+
+# Get the stats ID from a counter
+sub getSIDFromCounter
+{
+	my $counter = shift;
+
+
+	my $identifier = "Counter:$counter";
+	return _getSIDFromIdentifier($identifier);
+}
+
+
+# Set the stats ID from a counter
+sub setSIDFromCounter
+{
+	my $counter = shift;
+
+
+	my $identifier = "Counter:$counter";
+	my $sid = _getSIDFromIdentifier($identifier);
+	if (!defined($sid)) {
+		$sid = _setSIDFromIdentifier($identifier);
+	}
+	return $sid;
+}
+
+
 # Return traffic direction
 sub getTrafficDirection
 {
@@ -847,13 +892,26 @@ sub _getSIDFromIdentifier
 warn "FAILED TO EXECUTE GETUSER: ".$identifierGetSTH->errstr;
 	}
 
+	return undef;
+}
+
+
+# Set SID from identifier in DB
+sub _setSIDFromIdentifier
+{
+	my $identifier = shift;
+
+
 	# Try add it to the DB
 	my $identifierAddSTH = $statsPreparedStatements->{'identifier_add'};
 	if (my $res = $identifierAddSTH->execute($identifier)) {
 		return $statsDBIdentifierMap->{$identifier} = $dbh->last_insert_id("","","","");
 	} else {
+# FIXME
 warn "DB ADD IDENTIFIER ERROR: ".$identifierAddSTH->errstr;
 	}
+
+	return undef;
 }