diff --git a/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java b/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java
index 42183aa..40e083b 100644
--- a/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java
+++ b/core/api/src/main/java/org/onosproject/net/ChannelSpacing.java
@@ -21,11 +21,11 @@
  * Represents interval frequency between two neighboring wavelengths.
  */
 public enum ChannelSpacing {
-    CHL_100GHZ(100),        // 100 GHz
-    CHL_50GHZ(50),          // 50 GHz
-    CHL_25GHZ(25),          // 25 GHz
-    CHL_12P5GHZ(12.5),      // 12.5 GHz
-    CHL_6P25GHZ(6.25);       // 6.25 GHz
+    CHL_100GHZ(100_000),        // 100 GHz
+    CHL_50GHZ(50_000),          // 50 GHz
+    CHL_25GHZ(25_000),          // 25 GHz
+    CHL_12P5GHZ(12_500),        // 12.5 GHz
+    CHL_6P25GHZ(6_250);         // 6.25 GHz
 
     private final Frequency frequency;
 
@@ -34,8 +34,8 @@
      *
      * @param value interval of neighboring wavelengths in GHz.
      */
-    ChannelSpacing(double value) {
-        this.frequency = Frequency.ofGHz(value);
+    ChannelSpacing(long value) {
+        this.frequency = Frequency.ofMHz(value);
     }
 
     public Frequency frequency() {
diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
index 0fa46f0..18a714d 100644
--- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -124,7 +124,7 @@
     private static final long KBPS = 1_000;
     private static final long MBPS = 1_000 * 1_000;
     private static final Frequency FREQ100 = Frequency.ofGHz(100);
-    private static final Frequency FREQ4_4 = Frequency.ofTHz(4.4);
+    private static final Frequency FREQ4_4 = Frequency.ofGHz(4_400);
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected DeviceProviderRegistry providerRegistry;
diff --git a/utils/misc/src/main/java/org/onlab/util/Frequency.java b/utils/misc/src/main/java/org/onlab/util/Frequency.java
index 1ef7113..49eebcb 100644
--- a/utils/misc/src/main/java/org/onlab/util/Frequency.java
+++ b/utils/misc/src/main/java/org/onlab/util/Frequency.java
@@ -72,6 +72,16 @@
      * @param value frequency in KHz
      * @return instance representing the given frequency
      */
+    public static Frequency ofKHz(long value) {
+        return new Frequency(value * KHZ);
+    }
+
+    /**
+     * Returns an instance representing the specified value in KHz.
+     *
+     * @param value frequency in KHz
+     * @return instance representing the given frequency
+     */
     public static Frequency ofKHz(double value) {
         return new Frequency((long) (value * KHZ));
     }
@@ -82,6 +92,16 @@
      * @param value frequency in MHz
      * @return instance representing the given frequency
      */
+    public static Frequency ofMHz(long value) {
+        return new Frequency(value * MHZ);
+    }
+
+    /**
+     * Returns an instance representing the specified value in MHz.
+     *
+     * @param value frequency in MHz
+     * @return instance representing the given frequency
+     */
     public static Frequency ofMHz(double value) {
         return new Frequency((long) (value * MHZ));
     }
@@ -92,6 +112,16 @@
      * @param value frequency in GHz
      * @return instance representing the given frequency
      */
+    public static Frequency ofGHz(long value) {
+        return new Frequency(value * GHZ);
+    }
+
+    /**
+     * Returns an instance representing the specified value in GHz.
+     *
+     * @param value frequency in GHz
+     * @return instance representing the given frequency
+     */
     public static Frequency ofGHz(double value) {
         return new Frequency((long) (value * GHZ));
     }
@@ -102,6 +132,16 @@
      * @param value frequency in THz
      * @return instance representing the given frequency
      */
+    public static Frequency ofTHz(long value) {
+        return new Frequency(value * THZ);
+    }
+
+    /**
+     * Returns an instance representing the specified value in THz.
+     *
+     * @param value frequency in THz
+     * @return instance representing the given frequency
+     */
     public static Frequency ofTHz(double value) {
         return new Frequency((long) (value * THZ));
     }
diff --git a/utils/misc/src/main/java/org/onlab/util/Spectrum.java b/utils/misc/src/main/java/org/onlab/util/Spectrum.java
index ca01c6e..c47a2ae 100644
--- a/utils/misc/src/main/java/org/onlab/util/Spectrum.java
+++ b/utils/misc/src/main/java/org/onlab/util/Spectrum.java
@@ -24,31 +24,31 @@
 public final class Spectrum {
 
     // Center frequency
-    public static final Frequency CENTER_FREQUENCY = Frequency.ofTHz(193.1);
+    public static final Frequency CENTER_FREQUENCY = Frequency.ofGHz(193_100);
 
     // O band (original): 1260 to 1360 nm
-    public static final Frequency O_BAND_MIN = Frequency.ofTHz(220.436);
-    public static final Frequency O_BAND_MAX = Frequency.ofTHz(237.931);
+    public static final Frequency O_BAND_MIN = Frequency.ofGHz(220_436);
+    public static final Frequency O_BAND_MAX = Frequency.ofGHz(237_931);
 
     // E band (extended): 1360 to 1460 nm
-    public static final Frequency E_BAND_MIN = Frequency.ofTHz(205.337);
-    public static final Frequency E_BAND_MAX = Frequency.ofTHz(220.436);
+    public static final Frequency E_BAND_MIN = Frequency.ofGHz(205_337);
+    public static final Frequency E_BAND_MAX = Frequency.ofGHz(220_436);
 
     // S band (short wavelength): 1460 to 1530 nm
-    public static final Frequency S_BAND_MIN = Frequency.ofTHz(195.943);
-    public static final Frequency S_BAND_MAX = Frequency.ofTHz(205.337);
+    public static final Frequency S_BAND_MIN = Frequency.ofGHz(195_943);
+    public static final Frequency S_BAND_MAX = Frequency.ofGHz(205_337);
 
     // C band (conventional): 1530 to 1565 nm
-    public static final Frequency C_BAND_MIN = Frequency.ofTHz(191.561);
-    public static final Frequency C_BAND_MAX = Frequency.ofTHz(195.943);
+    public static final Frequency C_BAND_MIN = Frequency.ofGHz(191_561);
+    public static final Frequency C_BAND_MAX = Frequency.ofGHz(195_943);
 
     // L band (long wavelength): 1565 to 1625 nm
-    public static final Frequency L_BAND_MIN = Frequency.ofTHz(184.488);
-    public static final Frequency L_BAND_MAX = Frequency.ofTHz(191.561);
+    public static final Frequency L_BAND_MIN = Frequency.ofGHz(184_488);
+    public static final Frequency L_BAND_MAX = Frequency.ofGHz(191_561);
 
     // U band (ultra-long wavelength): 1625 to 1675 nm
-    public static final Frequency U_BAND_MIN = Frequency.ofTHz(178.981);
-    public static final Frequency U_BAND_MAX = Frequency.ofTHz(184.488);
+    public static final Frequency U_BAND_MIN = Frequency.ofGHz(178_981);
+    public static final Frequency U_BAND_MAX = Frequency.ofGHz(184_488);
 
     private Spectrum() {
     }
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java b/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java
index 496f97d..67929cf 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ConfigProvider.java
@@ -102,7 +102,7 @@
     private static final String UNKNOWN = "unknown";
 
     // C-band has 4.4 THz (4,400 GHz) total bandwidth
-    private static final Frequency TOTAL = Frequency.ofTHz(4.4);
+    private static final Frequency TOTAL = Frequency.ofGHz(4_400);
 
     private CountDownLatch deviceLatch;
 
