diff --git a/opentrafficshaper/plugins/configmanager.pm b/opentrafficshaper/plugins/configmanager.pm
index e9869d2bc2c8761a1b1cdca138b29bf10d1b9a52..595be110e8d677bb4acbf91c1451717d9b25efaa 100644
--- a/opentrafficshaper/plugins/configmanager.pm
+++ b/opentrafficshaper/plugins/configmanager.pm
@@ -21,16 +21,27 @@ package opentrafficshaper::plugins::configmanager;
 use strict;
 use warnings;
 
-
 use POE;
-use Storable qw( dclone );
+use Storable qw(
+	dclone
+);
+use Time::HiRes qw(
+	gettimeofday
+	tv_interval
+);
 
+use awitpt::util qw(
+	isNumber ISNUMBER_ALLOW_ZERO
+	isIPv4
+	isUsername
+
+	prettyUndef
+
+	getHashChanges
+);
 use opentrafficshaper::constants;
 use opentrafficshaper::logger;
-use opentrafficshaper::utils;
 
-# NK: TODO: Maybe we want to remove timing at some stage? maybe not?
-use Time::HiRes qw( gettimeofday tv_interval );
 
 
 # Exporter stuff
diff --git a/opentrafficshaper/plugins/radius/radius.pm b/opentrafficshaper/plugins/radius/radius.pm
index 243f4f988226c61156db05e6c267836e5cb2d930..795923511cea6765f5a14b86db14faee18421fa1 100644
--- a/opentrafficshaper/plugins/radius/radius.pm
+++ b/opentrafficshaper/plugins/radius/radius.pm
@@ -29,7 +29,7 @@ use POE;
 use IO::Socket::INET;
 
 use opentrafficshaper::logger;
-use opentrafficshaper::utils;
+use awitpt::util;
 use opentrafficshaper::plugins::configmanager qw(
 	createPool
 	changePool
diff --git a/opentrafficshaper/plugins/tc/tc.pm b/opentrafficshaper/plugins/tc/tc.pm
index 3fb67070c7365640cfa60202d2ceff292e17fbdb..a96ad750e71842b77f6523e192045f088b5bb182 100644
--- a/opentrafficshaper/plugins/tc/tc.pm
+++ b/opentrafficshaper/plugins/tc/tc.pm
@@ -21,13 +21,15 @@ package opentrafficshaper::plugins::tc;
 use strict;
 use warnings;
 
+use POE qw(
+	Wheel::Run Filter::Line
+);
 
-use POE qw( Wheel::Run Filter::Line );
-
+use awitpt::util qw(
+	toHex
+);
 use opentrafficshaper::constants;
 use opentrafficshaper::logger;
-use opentrafficshaper::utils;
-
 use opentrafficshaper::plugins::configmanager qw(
 		getPool
 		getPoolAttribute
diff --git a/opentrafficshaper/plugins/webserver/pages/configmanager.pm b/opentrafficshaper/plugins/webserver/pages/configmanager.pm
index f134e473f7b89102136884301058558d2ad89ab8..fe4e95bf419593563e19e56cfaa41823ed3c45a9 100644
--- a/opentrafficshaper/plugins/webserver/pages/configmanager.pm
+++ b/opentrafficshaper/plugins/webserver/pages/configmanager.pm
@@ -32,18 +32,21 @@ our (@ISA,@EXPORT,@EXPORT_OK);
 
 use DateTime;
 use HTML::Entities;
-use HTTP::Status qw( :constants );
+use HTTP::Status qw(
+	:constants
+);
 use URI::Escape;
 
-use opentrafficshaper::logger;
-use opentrafficshaper::plugins;
-use opentrafficshaper::utils qw(
+use awitpt::util qw(
+	isNumber ISNUMBER_ALLOW_ZERO
+
 	parseFormContent
 	parseURIQuery
 
 	prettyUndef
 );
-
+use opentrafficshaper::logger;
+use opentrafficshaper::plugins;
 use opentrafficshaper::plugins::configmanager qw(
 	getInterfaces
 	getInterfaceTrafficClasses
diff --git a/opentrafficshaper/plugins/webserver/pages/limits.pm b/opentrafficshaper/plugins/webserver/pages/limits.pm
index 4f895dd159c9e92375013101f80d71aac3400f6b..8a4fe29f15e8aad979df6e547c4016e4b6f5e5d2 100644
--- a/opentrafficshaper/plugins/webserver/pages/limits.pm
+++ b/opentrafficshaper/plugins/webserver/pages/limits.pm
@@ -32,23 +32,28 @@ our (@ISA,@EXPORT,@EXPORT_OK);
 
 use DateTime;
 use HTML::Entities;
-use HTTP::Status qw( :constants );
-use URI::Escape qw( uri_escape );
+use HTTP::Status qw(
+	:constants
+);
+use URI::Escape qw(
+	uri_escape
+);
 use URI::QueryParam;
-use Storable qw( dclone );
+use Storable qw(
+	dclone
+);
 
-use opentrafficshaper::constants;
-use opentrafficshaper::logger;
-use opentrafficshaper::plugins;
-use opentrafficshaper::utils qw(
+use awitpt::util qw(
 	parseURIQuery
 	parseFormContent
 	isUsername
-	isIP
+	isIPv4
 	isNumber
 	prettyUndef
 );
-
+use opentrafficshaper::constants;
+use opentrafficshaper::logger;
+use opentrafficshaper::plugins;
 use opentrafficshaper::plugins::configmanager qw(
 	getPools
 	getPool
@@ -1039,7 +1044,7 @@ sub poolmember_addedit
 			push(@errors,"Username is not valid");
 		}
 		my $ipAddress;
-		if (!defined($ipAddress = isIP($formData->{'IPAddress'}))) {
+		if (!defined($ipAddress = isIPv4($formData->{'IPAddress'}))) {
 			push(@errors,"IP address is not valid");
 		}
 		my $matchPriorityID;
@@ -1434,7 +1439,7 @@ sub limit_add
 			push(@errors,"Username is not valid");
 		}
 		my $ipAddress;
-		if (!defined($ipAddress = isIP($formData->{'IPAddress'}))) {
+		if (!defined($ipAddress = isIPv4($formData->{'IPAddress'}))) {
 			push(@errors,"IP address is not valid");
 		}
 		my $interfaceGroupID;
@@ -1980,7 +1985,7 @@ sub override_addedit
 		# Make sure we have at least a pool name, username or IP address
 		my $poolName = isUsername($formData->{'PoolName'});
 		my $username = isUsername($formData->{'Username'});
-		my $ipAddress = isIP($formData->{'IPAddress'});
+		my $ipAddress = isIPv4($formData->{'IPAddress'});
 		if (!defined($poolName) && !defined($username) && !defined($ipAddress)) {
 			push(@errors,"A pool name and/or IP address and/or Username must be specified");
 		}
diff --git a/opentrafficshaper/plugins/webserver/pages/statistics.pm b/opentrafficshaper/plugins/webserver/pages/statistics.pm
index a3b130ee821204fb821e4e040d4562679c044565..bc020b4946cc4d710f4678f3ef75198ba14f1f40 100644
--- a/opentrafficshaper/plugins/webserver/pages/statistics.pm
+++ b/opentrafficshaper/plugins/webserver/pages/statistics.pm
@@ -32,16 +32,19 @@ our (@ISA,@EXPORT,@EXPORT_OK);
 
 use DateTime;
 use HTML::Entities;
-use HTTP::Status qw( :constants );
+use HTTP::Status qw(
+	:constants
+);
 use JSON;
-use URI::Escape qw( uri_escape );
+use URI::Escape qw(
+	uri_escape
+);
 
-use opentrafficshaper::logger;
-use opentrafficshaper::plugins;
-use opentrafficshaper::utils qw(
+use awitpt::util qw(
 	parseURIQuery
 );
-
+use opentrafficshaper::logger;
+use opentrafficshaper::plugins;
 use opentrafficshaper::plugins::configmanager qw(
 	getPoolByName
 
diff --git a/opentrafficshaper/plugins/webserver/snapins/websockets/statistics/statistics.pm b/opentrafficshaper/plugins/webserver/snapins/websockets/statistics/statistics.pm
index cf01cb0f00dcab0d03c537d53b5507308183f478..a02487c6f73509a97fb1e5352aab072b9f9f0851 100644
--- a/opentrafficshaper/plugins/webserver/snapins/websockets/statistics/statistics.pm
+++ b/opentrafficshaper/plugins/webserver/snapins/websockets/statistics/statistics.pm
@@ -36,11 +36,10 @@ use JSON;
 use POE;
 use URI;
 
-use opentrafficshaper::logger;
-use opentrafficshaper::utils qw(
+use awitpt::util qw(
 	parseKeyPairString
 );
-
+use opentrafficshaper::logger;
 use opentrafficshaper::plugins::configmanager qw(
 	getPoolByName
 	getInterfaceGroup