diff --git a/manifests/agent/central.pp b/manifests/agent/central.pp
index d93b8d99..477e42c6 100644
--- a/manifests/agent/central.pp
+++ b/manifests/agent/central.pp
@@ -11,10 +11,12 @@ class ceilometer::agent::central (
 
   include ceilometer::params
 
-  Package<| title == 'ceilometer-common' |> -> Class['ceilometer::agent::central']
+  Ceilometer_config<||> ~> Service['ceilometer-agent-central']
 
+  Package['ceilometer-agent-central'] -> Service['ceilometer-agent-central']
   package { 'ceilometer-agent-central':
-    ensure => installed
+    ensure => installed,
+    name   => $::ceilometer::params::agent_central_package_name,
   }
 
   if $enabled {
@@ -23,17 +25,15 @@ class ceilometer::agent::central (
     $service_ensure = 'stopped'
   }
 
+  Package['ceilometer-common'] -> Service['ceilometer-agent-central']
   service { 'ceilometer-agent-central':
     ensure     => $service_ensure,
-    name       => $::ceilometer::params::agent_central_name,
+    name       => $::ceilometer::params::agent_central_service_name,
     enable     => $enabled,
     hasstatus  => true,
     hasrestart => true,
-    require    => Package['ceilometer-agent-central']
   }
 
-  Ceilometer_config<||> ~> Service['ceilometer-agent-central']
-
   ceilometer_config {
     'DEFAULT/os_auth_url'         : value => $auth_url;
     'DEFAULT/os_auth_region'      : value => $auth_region;
diff --git a/manifests/agent/compute.pp b/manifests/agent/compute.pp
index 78a1adef..b614492b 100644
--- a/manifests/agent/compute.pp
+++ b/manifests/agent/compute.pp
@@ -11,10 +11,12 @@ class ceilometer::agent::compute (
 
   include ceilometer::params
 
-  Package<| title == 'ceilometer-common' |> -> Class['ceilometer::agent::compute']
+  Ceilometer_config<||> ~> Service['ceilometer-agent-compute']
 
+  Package['ceilometer-agent-compute'] -> Service['ceilometer-agent-compute']
   package { 'ceilometer-agent-compute':
-    ensure => installed
+    ensure => installed,
+    name   => $::ceilometer::params::agent_compute_package_name,
   }
 
   User['ceilometer'] {
@@ -27,17 +29,15 @@ class ceilometer::agent::compute (
     $service_ensure = 'stopped'
   }
 
+  Package['ceilometer-common'] -> Service['ceilometer-agent-central']
   service { 'ceilometer-agent-compute':
     ensure     => $service_ensure,
     name       => $::ceilometer::params::agent_compute_service_name,
     enable     => $enabled,
     hasstatus  => true,
     hasrestart => true,
-    require    => Package['ceilometer-agent-compute']
   }
 
-  Ceilometer_config<||> ~> Service['ceilometer-agent-compute']
-
   ceilometer_config {
     'DEFAULT/os_auth_url'         : value => $auth_url;
     'DEFAULT/os_auth_region'      : value => $auth_region;
diff --git a/manifests/api.pp b/manifests/api.pp
index f9f42558..5136d188 100644
--- a/manifests/api.pp
+++ b/manifests/api.pp
@@ -11,10 +11,12 @@ class ceilometer::api (
 
   include ceilometer::params
 
-  Package<| title == 'ceilometer-common' |> -> Class['ceilometer::api']
-
   validate_string($keystone_password)
 
+  Ceilometer_config<||> ~> Service['ceilometer-api']
+
+  Package['ceilometer-api'] -> Ceilometer_config<||>
+  Package['ceilometer-api'] -> Service['ceilometer-api']
   package { 'ceilometer-api':
     ensure => installed,
     name   => $::ceilometer::params::api_package_name,
@@ -26,18 +28,17 @@ class ceilometer::api (
     $service_ensure = 'stopped'
   }
 
+  Package['ceilometer-common'] -> Service['ceilometer-api']
   service { 'ceilometer-api':
     ensure     => $service_ensure,
     name       => $::ceilometer::params::api_service_name,
     enable     => $enabled,
     hasstatus  => true,
     hasrestart => true,
-    require    => [Package['ceilometer-api'], Class['ceilometer::db']],
+    require    => Class['ceilometer::db'],
     subscribe  => Exec['ceilometer-dbsync']
   }
 
-  Ceilometer_config<||> ~> Service['ceilometer-api']
-
   ceilometer_config {
     'keystone_authtoken/auth_host'         : value => $keystone_host;
     'keystone_authtoken/auth_port'         : value => $keystone_port;
diff --git a/manifests/collector.pp b/manifests/collector.pp
index 60193d4d..b94bed10 100644
--- a/manifests/collector.pp
+++ b/manifests/collector.pp
@@ -5,8 +5,9 @@ class ceilometer::collector (
 
   include ceilometer::params
 
-  Package<| title == 'ceilometer-common' |> -> Class['ceilometer::collector']
+  Ceilometer_config<||> ~> Service['ceilometer-collector']
 
+  Package['ceilometer-collector'] -> Service['ceilometer-collector']
   package { 'ceilometer-collector':
     ensure => installed,
     name   => $::ceilometer::params::collector_package_name,
@@ -18,15 +19,14 @@ class ceilometer::collector (
     $service_ensure = 'stopped'
   }
 
+  Package['ceilometer-common'] -> Service['ceilometer-collector']
   service { 'ceilometer-collector':
     ensure     => $service_ensure,
     name       => $::ceilometer::params::collector_service_name,
     enable     => $enabled,
     hasstatus  => true,
     hasrestart => true,
-    require    => [Package['ceilometer-collector'], Class['ceilometer::db']],
+    require    => Class['ceilometer::db'],
     subscribe  => Exec['ceilometer-dbsync']
   }
-
-  Ceilometer_config<||> ~> Service['ceilometer-collector']
 }
diff --git a/spec/classes/ceilometer_api_spec.rb b/spec/classes/ceilometer_api_spec.rb
index 9cee3277..c50a3afe 100644
--- a/spec/classes/ceilometer_api_spec.rb
+++ b/spec/classes/ceilometer_api_spec.rb
@@ -35,7 +35,7 @@ describe 'ceilometer::api' do
         :enable     => true,
         :hasstatus  => true,
         :hasrestart => true,
-        :require    => ['Package[ceilometer-api]', 'Class[Ceilometer::Db]'],
+        :require    => 'Class[Ceilometer::Db]',
         :subscribe  => 'Exec[ceilometer-dbsync]'
       )
     end
diff --git a/spec/classes/ceilometer_collector_spec.rb b/spec/classes/ceilometer_collector_spec.rb
index f6c91259..421b36de 100644
--- a/spec/classes/ceilometer_collector_spec.rb
+++ b/spec/classes/ceilometer_collector_spec.rb
@@ -2,6 +2,10 @@ require 'spec_helper'
 
 describe 'ceilometer::collector' do
 
+  let :pre_condition do
+    "class { 'ceilometer': metering_secret => 's3cr3t' }"
+  end
+
   shared_examples_for 'ceilometer-collector' do
 
     it { should include_class('ceilometer::params') }
@@ -20,7 +24,7 @@ describe 'ceilometer::collector' do
         :enable     => true,
         :hasstatus  => true,
         :hasrestart => true,
-        :require    => ['Package[ceilometer-collector]', 'Class[Ceilometer::Db]'],
+        :require    => 'Class[Ceilometer::Db]',
         :subscribe  => 'Exec[ceilometer-dbsync]'
       )
     end