diff --git a/providers/link/src/main/java/org/onosproject/provider/linkdiscovery/impl/LinkDiscoveryProvider.java b/providers/link/src/main/java/org/onosproject/provider/linkdiscovery/impl/LinkDiscoveryProvider.java
index 44dd60d..dba7add 100644
--- a/providers/link/src/main/java/org/onosproject/provider/linkdiscovery/impl/LinkDiscoveryProvider.java
+++ b/providers/link/src/main/java/org/onosproject/provider/linkdiscovery/impl/LinkDiscoveryProvider.java
@@ -58,8 +58,7 @@
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.onlab.util.Tools.get;
 import static org.onlab.util.Tools.groupedThreads;
-import static org.onosproject.provider.linkdiscovery.impl.OsgiPropertyDefaults.POLL_DELAY_SECONDS_DEFAULT;
-import static org.onosproject.provider.linkdiscovery.impl.OsgiPropertyDefaults.POLL_FREQUENCY_SECONDS_DEFAULT;
+import static org.onosproject.provider.linkdiscovery.impl.OsgiPropertyConstants.*;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
@@ -68,8 +67,8 @@
  */
 @Component(immediate = true,
         property = {
-                "linkPollDelaySeconds:Integer=" + POLL_DELAY_SECONDS_DEFAULT,
-                "linkPollFrequencySeconds:Integer=" + POLL_FREQUENCY_SECONDS_DEFAULT,
+                POLL_DELAY_SECONDS + ":Integer=" + POLL_DELAY_SECONDS_DEFAULT,
+                POLL_FREQUENCY_SECONDS + ":Integer=" + POLL_FREQUENCY_SECONDS_DEFAULT,
         })
 public class LinkDiscoveryProvider extends AbstractProvider
         implements LinkProvider {
@@ -78,12 +77,11 @@
     protected static final String SCHEME_NAME = "linkdiscovery";
     private static final String LINK_PROVIDER_PACKAGE = "org.onosproject.provider.linkdiscovery";
     private final Logger log = getLogger(getClass());
-    //@Property(name = "linkPollDelaySeconds", intValue = DEFAULT_POLL_DELAY_SECONDS,
-    //        label = "Initial delay (in seconds) for polling link discovery")
+
+    /** Initial delay (in seconds) for polling link discovery. */
     protected static int linkPollDelaySeconds = POLL_DELAY_SECONDS_DEFAULT;
 
-    //@Property(name = "linkPollFrequencySeconds", intValue = DEFAULT_POLL_FREQUENCY_SECONDS,
-    //        label = "Frequency (in seconds) for polling link discovery")
+    /** Frequency (in seconds) for polling link discovery. */
     protected static int linkPollFrequencySeconds = POLL_FREQUENCY_SECONDS_DEFAULT;
 
 
@@ -171,7 +169,7 @@
     private int getNewPollFrequency(Dictionary<?, ?> properties, int pollFrequency) {
         int newPollFrequency;
         try {
-            String s = get(properties, "linkPollFrequencySeconds");
+            String s = get(properties, POLL_FREQUENCY_SECONDS);
             newPollFrequency = isNullOrEmpty(s) ? pollFrequency : Integer.parseInt(s.trim());
         } catch (NumberFormatException | ClassCastException e) {
             newPollFrequency = POLL_FREQUENCY_SECONDS_DEFAULT;
@@ -182,7 +180,7 @@
     private int getNewPollDealy(Dictionary<?, ?> properties, int pollDelay) {
         int newPollFrequency;
         try {
-            String s = get(properties, "linkPollDelaySeconds");
+            String s = get(properties, POLL_DELAY_SECONDS);
             newPollFrequency = isNullOrEmpty(s) ? pollDelay : Integer.parseInt(s.trim());
         } catch (NumberFormatException | ClassCastException e) {
             newPollFrequency = POLL_DELAY_SECONDS_DEFAULT;
