In general I'm biased to consider that if the words used to name things in a program don't make some "sense" together, they are poorly chosen. That's why, ie, when we first used *$install_director* in the bacula module but then changed it to *$manage_director*, because

```puppet
class { 'bacula':
    install_director => true,
    ensure => absent,
}
```
is completly misleading on what you are really doing about the director package. But:

```puppet
class { 'bacula':
    manage_director => true,
    ensure => absent,
}
```
is clearer.

This seems the same case to me. 

```puppet
class { 'app_from_the_net::install':
  ensure => absent,
  ...
}
```
does not make sense.

In this case we are talking here, and using *puppi::netinstall* as an example of a tool to do net installs, I'm thinking of something like this:

Invocation:
```puppet
class { 'app_from_the_net::package':
  ensure => present,
  provider => netinstall,
  install_destination => '/some/dir',
  install_pre_exec => 'wget http://something/somethingmore.tar.gz',
  ...
}
```

and in the class it would look like:

```puppet
class app_from_the_net::package (
  ensure = present,
  provider = undef,
  install_destination = undef,
  install_pre_exec = undef,
  ...
) {
  ...
  if $provider == 'netinstall' {
    puppi::netinstall { 'all_the_magic_here':
      ...
    }
  } else {
    package { $name:
      ensure => $ensure,
      ...
    }
  }
}
```
When you need to install a package from the net or similar, we can use *provider* to specify an uncommon installation method.

Speaking from the top of my head here, does this make sense to you? :)