Heh, I was just replying about the same (though surely foreman before register?).  We can't do that though, as it'll error if the foreman class isn't included (this module should work independently too).  We should use a collector which specifies the foreman class has to run before any registrations, e.g.

    Class['foreman'] -> Foreman_smartproxy <| |>

(http://docs.puppetlabs.com/puppet/3/reference/lang_collectors.html)

I think this should go in the foreman module though, not here.