diff --git a/REFERENCE.md b/REFERENCE.md
index 1855db4971a9a99a299e9bda22c23e1be7b08f28..5a54f62e1013e28cb7ad74c3a436bb4ec507dbae 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -54,7 +54,7 @@ The following parameters are available in the `freeipa` class.
 
 ##### `domain`
 
-Data type: `String`
+Data type: `Stdlib::Fqdn`
 
 The name of the IPA domain to create or join.
 
@@ -246,15 +246,15 @@ Default value: `true`
 
 ##### `ip_address`
 
-Data type: `String`
+Data type: `Stdlib::IP::Address::V4`
 
 IP address to pass to the IPA installer.
 
-Default value: ''
+Default value: '0.0.0.0'
 
 ##### `ipa_server_fqdn`
 
-Data type: `String`
+Data type: `Stdlib::Fqdn`
 
 Actual fqdn of the IPA server or client.
 
@@ -278,11 +278,11 @@ Default value: $::osfamily
 
 ##### `ipa_master_fqdn`
 
-Data type: `String`
+Data type: `Stdlib::Fqdn`
 
 FQDN of the server to use for a client or replica domain join.
 
-Default value: ''
+Default value: 'default'
 
 ##### `manage_host_entry`
 
@@ -310,11 +310,11 @@ Default value: `false`
 
 ##### `realm`
 
-Data type: `String`
+Data type: `Stdlib::Fqdn`
 
 The name of the IPA realm to create or join.
 
-Default value: ''
+Default value: 'default'
 
 ##### `server_install_ldaputils`
 
@@ -366,7 +366,7 @@ Default value: `false`
 
 ##### `webui_proxy_external_fqdn`
 
-Data type: `String`
+Data type: `Stdlib::Fqdn`
 
 The public or external FQDN used to access the IPA Web UI behind the reverse proxy.
 
diff --git a/manifests/init.pp b/manifests/init.pp
index 6b7062d9386a4f6734b4203c381b20b490f746a8..567c542c1179c6d98c4ace2ac8cde930543e5dc2 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -58,60 +58,60 @@
 #
 #
 class freeipa (
-  String        $domain                             = 'default',
-  String        $ipa_role                           = 'default',
-  String        $admin_password                     = '',
-  String        $directory_services_password        = '',
-  String        $autofs_package_name                = 'autofs',
-  Boolean       $client_install_ldaputils           = false,
-  Boolean       $configure_dns_server               = true,
-  Boolean       $configure_ntp                      = true,
-  Array[String] $custom_dns_forwarders              = [],
-  String        $domain_join_principal              = '',
-  String        $domain_join_password               = '',
-  Boolean       $enable_hostname                    = true,
-  Boolean       $enable_ip_address                  = false,
-  Boolean       $fixed_primary                      = false,
-  Integer       $idstart                            = 10000,
-  Boolean       $install_autofs                     = false,
-  Boolean       $install_epel                       = true,
-  Boolean       $install_kstart                     = true,
-  Boolean       $install_sssdtools                  = true,
-  String        $ipa_client_package_name            = $::osfamily ? {
+  Stdlib::Fqdn                   $domain                             = 'default',
+  String                         $ipa_role                           = 'default',
+  String                         $admin_password                     = '',
+  String                         $directory_services_password        = '',
+  String                         $autofs_package_name                = 'autofs',
+  Boolean                        $client_install_ldaputils           = false,
+  Boolean                        $configure_dns_server               = true,
+  Boolean                        $configure_ntp                      = true,
+  Array[String]                  $custom_dns_forwarders              = [],
+  String                         $domain_join_principal              = '',
+  String                         $domain_join_password               = '',
+  Boolean                        $enable_hostname                    = true,
+  Boolean                        $enable_ip_address                  = false,
+  Boolean                        $fixed_primary                      = false,
+  Integer                        $idstart                            = 10000,
+  Boolean                        $install_autofs                     = false,
+  Boolean                        $install_epel                       = true,
+  Boolean                        $install_kstart                     = true,
+  Boolean                        $install_sssdtools                  = true,
+  String                         $ipa_client_package_name            = $::osfamily ? {
     'Debian' => 'freeipa-client',
     default  => 'ipa-client',
   },
-  String        $ipa_server_package_name            = 'ipa-server',
-  Boolean       $install_ipa_client                 = true,
-  Boolean       $install_ipa_server                 = true,
-  Boolean       $install_sssd                       = true,
-  String        $ip_address                         = '',
-  String        $ipa_server_fqdn                    = $::fqdn,
-  String        $kstart_package_name                = 'kstart',
-  String        $ldaputils_package_name             = $::osfamily ? {
+  String                         $ipa_server_package_name            = 'ipa-server',
+  Boolean                        $install_ipa_client                 = true,
+  Boolean                        $install_ipa_server                 = true,
+  Boolean                        $install_sssd                       = true,
+  Stdlib::IP::Address::V4        $ip_address                         = '0.0.0.0',
+  Stdlib::Fqdn                   $ipa_server_fqdn                    = $::fqdn,
+  String                         $kstart_package_name                = 'kstart',
+  String                         $ldaputils_package_name             = $::osfamily ? {
     'Debian' => 'ldap-utils',
     default  => 'openldap-clients',
   },
-  String        $ipa_master_fqdn                    = '',
-  Boolean       $manage_host_entry                  = false,
-  Boolean       $mkhomedir                          = true,
-  Boolean       $no_ui_redirect                     = false,
-  String        $realm                              = '',
-  Boolean       $server_install_ldaputils           = true,
-  String        $sssd_package_name                  = 'sssd-common',
-  String        $sssdtools_package_name             = 'sssd-tools',
-  Boolean       $webui_disable_kerberos             = false,
-  Boolean       $webui_enable_proxy                 = false,
-  Boolean       $webui_force_https                  = false,
-  String        $webui_proxy_external_fqdn          = 'localhost',
-  String        $webui_proxy_https_port             = '8440',
+  Stdlib::Fqdn                   $ipa_master_fqdn                    = 'default',
+  Boolean                        $manage_host_entry                  = false,
+  Boolean                        $mkhomedir                          = true,
+  Boolean                        $no_ui_redirect                     = false,
+  Stdlib::Fqdn                   $realm                              = 'default',
+  Boolean                        $server_install_ldaputils           = true,
+  String                         $sssd_package_name                  = 'sssd-common',
+  String                         $sssdtools_package_name             = 'sssd-tools',
+  Boolean                        $webui_disable_kerberos             = false,
+  Boolean                        $webui_enable_proxy                 = false,
+  Boolean                        $webui_force_https                  = false,
+  Stdlib::Fqdn                   $webui_proxy_external_fqdn          = 'localhost',
+  String                         $webui_proxy_https_port             = '8440',
 ) {
 
   if $facts['kernel'] != 'Linux' or $facts['osfamily'] == 'Windows' {
     fail('This module is only supported on Linux.')
   }
 
-  if $realm != '' {
+  if $realm != 'default'{
     $final_realm = $realm
   } else {
     $final_realm = upcase($domain)
diff --git a/manifests/validate_params.pp b/manifests/validate_params.pp
index bd8e25b16ec671235f6992eea7101b75d2574257..fb1b0f5462e3e768add0ce558281e90930b56aec 100644
--- a/manifests/validate_params.pp
+++ b/manifests/validate_params.pp
@@ -14,33 +14,17 @@ class freeipa::validate_params {
     default: {fail('The parameter ipa_role must be set to client, master, or replica.')}
   }
 
-  if $freeipa::ip_address != '' {
-    # TODO: validate_legacy
-    if !is_ipv4_address($freeipa::ip_address) {
-      fail('The parameter ip_address must pass validation as an IPv4 address.')
-    }
-  }
-
   if $freeipa::manage_host_entry {
-    if $freeipa::ip_address  == '' {
+    if $freeipa::ip_address  == '0.0.0.0' {
       fail('When using the parameter manage_host_entry, the parameter ip_address is mandatory.')
     }
   }
 
+
   if $freeipa::idstart < 10000 {
     fail('Parameter "idstart" must be an integer greater than 10000.')
   }
 
-  # TODO: validate_legacy
-  if ! is_domain_name($freeipa::domain) {
-    fail('The parameter \'domain\' must pass validation as a domain name.')
-  }
-
-  # TODO: validate_legacy
-  if ! is_domain_name($freeipa::final_realm) {
-    fail('The parameter \'realm\' must pass validation as a domain name.')
-  }
-
   if $freeipa::ipa_role == 'master' {
     if length($freeipa::admin_password) < 8 {
       fail('When ipa_role is set to master, the parameter admin_password must be populated and at least of length 8.')
@@ -56,11 +40,8 @@ must be populated and at least of length 8."
 
   if $freeipa::ipa_role != 'master' { # if replica or client
 
-    # TODO: validate_legacy
-    if $freeipa::ipa_master_fqdn == ''{
-      fail("When creating a ${freeipa::ipa_role} the parameter named ipa_master_fqdn cannot be empty.")
-    } elsif !is_domain_name($freeipa::ipa_master_fqdn) {
-      fail('The parameter \'ipa_master_fqdn\' must pass validation as a domain name.')
+    if $freeipa::ipa_master_fqdn == 'default'{
+      fail("When creating a ${freeipa::ipa_role} the parameter named ipa_master_fqdn must be set.")
     }
 
     if $freeipa::final_domain_join_password == '' {
diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb
index 72dafd70252ac6ad18a42412b5a54475744fb2bd..cfe6657deda3f7605eff8e11f3b8f3418837336e 100644
--- a/spec/classes/init_spec.rb
+++ b/spec/classes/init_spec.rb
@@ -105,47 +105,6 @@ describe 'freeipa', type: :class do
 
               it { is_expected.to raise_error(Puppet::Error, %r{populated and at least of length 8}) }
             end
-
-            context 'with bad ip_address' do
-              let :params do
-                {
-                  ipa_role:                    'master',
-                  domain:                      'rspec.example.lan',
-                  admin_password:              'rspecrspec123',
-                  directory_services_password: 'rspecrspec123',
-                  ip_address:                  'not_an_ip'
-                }
-              end
-
-              it { is_expected.to raise_error(Puppet::Error, %r{parameter ip_address must pass validation}) }
-            end
-
-            context 'with bad domain' do
-              let :params do
-                {
-                  ipa_role:                    'master',
-                  domain:                      'not_a_domain',
-                  admin_password:              'rspecrspec123',
-                  directory_services_password: 'rspecrspec123'
-                }
-              end
-
-              it { is_expected.to raise_error(Puppet::Error, %r{must pass validation as a domain name}) }
-            end
-
-            context 'with bad realm' do
-              let :params do
-                {
-                  ipa_role:                    'master',
-                  domain:                      'rspec.example.lan',
-                  realm:                       'not_a_realm',
-                  admin_password:              'rspecrspec123',
-                  directory_services_password: 'rspecrspec123'
-                }
-              end
-
-              it { is_expected.to raise_error(Puppet::Error, %r{must pass validation as a domain name}) }
-            end
           end
 
           context 'as replica' do
@@ -191,20 +150,7 @@ describe 'freeipa', type: :class do
                 }
               end
 
-              it { is_expected.to raise_error(Puppet::Error, %r{parameter named ipa_master_fqdn cannot be empty}) }
-            end
-
-            context 'with bad ipa_master_fqdn' do
-              let :params do
-                {
-                  ipa_role:             'replica',
-                  domain:               'rspec.example.lan',
-                  ipa_master_fqdn:      'not_an_fqdn',
-                  domain_join_password: 'rspecrspec123'
-                }
-              end
-
-              it { is_expected.to raise_error(Puppet::Error, %r{pass validation as a domain name}) }
+              it { is_expected.to raise_error(Puppet::Error, %r{parameter named ipa_master_fqdn must be set}) }
             end
 
             context 'missing domain_join_password' do
@@ -271,7 +217,7 @@ describe 'freeipa', type: :class do
             }
           end
 
-          it { is_expected.to raise_error(Puppet::Error, %r{parameter named ipa_master_fqdn cannot be empty}) }
+          it { is_expected.to raise_error(Puppet::Error, %r{parameter named ipa_master_fqdn must be set}) }
         end
 
         context 'missing domain_join_password' do