Repository: bxcodec/faker
Pull request #12 (2017-10-27 07:55:44)

New provider Person
Add new provider Person

codecov[bot]: # [Codecov](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=h1) Report
> Merging [#12](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=desc) into [master](https://codecov.io/gh/bxcodec/faker/commit/34279ecfa8aa282b3967012a8c4181e3f447de4d?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/bxcodec/faker/pull/12/graphs/tree.svg?src=pr&token=cLPGB7MHVc&width=650&height=150)](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=tree)

```diff
@@          Coverage Diff          @@
##           master    #12   +/-   ##
=====================================
  Coverage     100%   100%           
=====================================
  Files           5      6    +1     
  Lines         289    312   +23     
=====================================
+ Hits          289    312   +23
```


| [Impacted Files](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [faker.go](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=tree#diff-ZmFrZXIuZ28=) | `100% <ø> (ø)` | :arrow_up: |
| [person.go](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=tree#diff-cGVyc29uLmdv) | `100% <100%> (ø)` | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=footer). Last update [34279ec...b2772f9](https://codecov.io/gh/bxcodec/faker/pull/12?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

bxcodec: Wow. Would you mind update the Readme too, about this new feature? 

* btw, thanks for the PR
agoalofalife: Yes , a little later
bxcodec: @agoalofalife  LGTM
agoalofalife: Who will merge?
bxcodec: When I've approved it, you can merge it directly.  :) 

Patch:
diff --git a/README.md b/README.md
index cfdf63d..f933906 100644
--- a/README.md
+++ b/README.md
@@ -36,13 +36,56 @@ go get -u github.com/bxcodec/faker
 ## Example
 
 ### With Tag
-Supported tag :
+Supported tag:
+
+**Internet :**
 * Email
+* Mac address
+* Domain name
+* Url
+* UserName
 * IP Address (IPV4 IPV6 )
+* Password
+
+ 
+**Payment :**
 * Credit Card Type (VISA, MASTERCARD , AMERICAN EXPRESS ,DISCOVER)
 * Credit Card Number
+
+**Address :**
 * Latitude and Longitude
 
+**Phone :**
+* Phone number
+* Toll free phone number
+* E164PhoneNumber
+
+**Person :**
+* Title male
+* Title female
+* FirstName male
+* FirstName female
+* LastName
+* Name
+
+**DateTime :**
+* UnixTime
+* Date
+* Time
+* MonthName
+* Year
+* DayOfWeek
+* DayOfMonth
+* Timestamp
+* Century
+* TimeZone
+* TimePeriod
+
+**Lorem :**
+* Word
+* Sentence
+* Sentences
+
 ```go
 
 package main
@@ -60,7 +103,33 @@ type SomeStruct struct {
  Email            string  `faker:"email"`
  IPV4             string  `faker:"ipv4"`
  IPV6             string  `faker:"ipv6"`
-
+ Password         string  `faker:"password"` 
+ PhoneNumber      string  `faker:"phone_number"`
+ MacAddress       string  `faker:"mac_address"`
+ Url              string  `faker:"url"`
+ UserName         string  `faker:"username"`
+ ToolFreeNumber   string  `faker:"tool_free_number"`
+ E164PhoneNumber  string  `faker:"e_164_phone_number"`
+ TitleMale        string  `faker:"title_male"`
+ TitleFemale      string  `faker:"title_female"`
+ FirstNameMale    string  `faker:"first_name_male"`
+ FirstNameFemale  string  `faker:"first_name_female"`
+ LastName         string  `faker:"last_name"`
+ Name             string  `faker:"name"`
+ UnixTime         int64   `faker:"unix_time"`
+ Date             string  `faker:"date"`
+ Time             string  `faker:"time"`
+ MonthName        string  `faker:"month_name"`
+ Year             string  `faker:"year"`
+ DayOfWeek        string  `faker:"day_of_week"`
+ DayOfMonth       string  `faker:"day_of_month"`
+ Timestamp        string  `faker:"timestamp"`
+ Century          string  `faker:"century"`
+ TimeZone         string  `faker:"timezone"`
+ TimePeriod       string  `faker:"time_period"`
+ Word             string  `faker:"word"`
+ Sentence         string  `faker:"sentence"`
+ Sentences        string  `faker:"sentences"`
 }
 
 func main() {
@@ -72,8 +141,41 @@ func main() {
   }
   fmt.Printf("%+v", a)
 	//Will Print  :
-	// {Latitude:31.456718 Long:159.9867 CreditCardType:Discover CreditCardNumber:6011091892846730 Email:MeHOZEM@Zxhmd.com IPV4:76.24.239.144 IPV6:e8e9:4a26:4c2b:20d3:541e:98b:c5fd:aa26}PASS
-
+	 /* Latitude: -74.209991,
+        Long: -4.394531,
+        CreditCardNumber: 376243757700558,
+        CreditCardType: american express,
+        Email: QjTIcmn@lmErh.info,
+        IPV4: 80.206.109.93,
+        IPV6: 448f:a391:90c6:d165:1d1f:b536:45f7:f084,
+	    Password: FhOSWpnzXwxxnCTlZJcZeBTUeRaVidThUdntQryyjNiAFwbyCe,
+        PhoneNumber: 865-321-1047,
+        MacAddress: 46:77:6f:bb:d0:fc,
+        Url: https://sFUBEIj.info/kYvcpYL.html,
+        UserName: VwrVhzZ,
+        ToolFreeNumber: (777) 372-148965,
+        E164PhoneNumber: +765101283947,
+        TitleMale: Prof.,
+        TitleFemale: Dr.,
+        FirstNameMale: Charley,
+        FirstNameFemale: Freeda,
+        LastName: Runte,
+        Name: Dr. Freeda Runte,
+        UnixTime: 679631083,
+        Date: 2010-06-12,
+        Time: 11:33:24,
+        MonthName: January,
+        Year: 1982,
+        DayOfWeek: Sunday,
+        DayOfMonth: 26,
+        Timestamp: 1972-06-24 14:03:32,
+        Century: XV,
+        TimeZone: Navajo,
+        TimePeriod: AM,
+	    Word: consectetur,
+        Sentence: Perferendis aut sit accusantium consequatur voluptatem .,
+        Sentences: Perferendis sit consequatur accusantium aut voluptatem .Aut voluptatem consequatur sit perferendis accusantium .Aut consequatur sit accusantium perferendis voluptatem .,
+	 */
 }
 
 ```
@@ -156,4 +258,4 @@ Support Only For :
 * string []string
 * float32 float64 []float32 []float64
 * Nested Struct Field for Non POINTER
-* time.Time []time.Time
+* time.Time []time.Time
\ No newline at end of file
diff --git a/datetime.go b/datetime.go
new file mode 100644
index 0000000..60b7a10
--- /dev/null
+++ b/datetime.go
@@ -0,0 +1,694 @@
+package faker
+
+import (
+	"fmt"
+	"math/rand"
+	"reflect"
+	"time"
+)
+
+var century = []string{"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX", "XXI"}
+var timezones = []string{
+	"Australia/Adelaide",
+	"Australia/Broken_Hill",
+	"Australia/South",
+	"Australia/Yancowinna",
+	"Australia/Darwin",
+	"Australia/North",
+	"America/Eirunepe",
+	"America/Porto_Acre",
+	"America/Rio_Branco",
+	"Brazil/Acre",
+	"Australia/Eucla",
+	"Australia/ACT",
+	"Australia/Canberra",
+	"Australia/Currie",
+	"Australia/Hobart",
+	"Australia/Melbourne",
+	"Australia/NSW",
+	"Australia/Sydney",
+	"Australia/Tasmania",
+	"Australia/Victoria",
+	"Australia/Brisbane",
+	"Australia/Lindeman",
+	"Australia/Queensland",
+	"Asia/Kabul",
+	"America/Anchorage",
+	"America/Juneau",
+	"America/Nome",
+	"America/Sitka",
+	"America/Yakutat",
+	"US/Alaska",
+	"Asia/Almaty",
+	"America/Boa_Vista",
+	"America/Campo_Grande",
+	"America/Cuiaba",
+	"America/Manaus",
+	"America/Porto_Velho",
+	"Asia/Yerevan",
+	"Brazil/West",
+	"Asia/Anadyr",
+	"Asia/Aqtau",
+	"Asia/Aqtobe",
+	"America/Argentina/Buenos_Aires",
+	"America/Argentina/Catamarca",
+	"America/Argentina/ComodRivadavia",
+	"America/Argentina/Cordoba",
+	"America/Argentina/Jujuy",
+	"America/Argentina/La_Rioja",
+	"America/Argentina/Mendoza",
+	"America/Argentina/Rio_Gallegos",
+	"America/Argentina/Salta",
+	"America/Argentina/San_Juan",
+	"America/Argentina/San_Luis",
+	"America/Argentina/Tucuman",
+	"America/Argentina/Ushuaia",
+	"America/Buenos_Aires",
+	"America/Catamarca",
+	"America/Cordoba",
+	"America/Jujuy",
+	"America/Mendoza",
+	"America/Rosario",
+	"America/Anguilla",
+	"America/Antigua",
+	"America/Aruba",
+	"America/Barbados",
+	"America/Blanc-Sablon",
+	"America/Curacao",
+	"America/Dominica",
+	"America/Glace_Bay",
+	"America/Goose_Bay",
+	"America/Grand_Turk",
+	"America/Grenada",
+	"America/Guadeloupe",
+	"America/Halifax",
+	"America/Kralendijk",
+	"America/Lower_Princes",
+	"America/Marigot",
+	"America/Martinique",
+	"America/Moncton",
+	"America/Montserrat",
+	"America/Port_of_Spain",
+	"America/Puerto_Rico",
+	"America/Santo_Domingo",
+	"America/St_Barthelemy",
+	"America/St_Kitts",
+	"America/St_Lucia",
+	"America/St_Thomas",
+	"America/St_Vincent",
+	"America/Thule",
+	"America/Tortola",
+	"America/Virgin",
+	"Asia/Aden",
+	"Asia/Baghdad",
+	"Asia/Bahrain",
+	"Asia/Kuwait",
+	"Asia/Qatar",
+	"Asia/Riyadh",
+	"Atlantic/Bermuda",
+	"Canada/Atlantic",
+	"Antarctica/Casey",
+	"Australia/Perth",
+	"Australia/West",
+	"Atlantic/Azores",
+	"Asia/Baku",
+	"Asia/Dacca",
+	"Asia/Dhaka",
+	"Asia/Brunei",
+	"America/La_Paz",
+	"America/Araguaina",
+	"America/Bahia",
+	"America/Belem",
+	"America/Fortaleza",
+	"America/Maceio",
+	"America/Recife",
+	"America/Santarem",
+	"America/Sao_Paulo",
+	"Brazil/East",
+	"Pacific/Bougainville",
+	"Asia/Thimbu",
+	"Asia/Thimphu",
+	"Africa/Blantyre",
+	"Africa/Bujumbura",
+	"Africa/Gaborone",
+	"Africa/Harare",
+	"Africa/Kigali",
+	"Africa/Lubumbashi",
+	"Africa/Lusaka",
+	"Africa/Maputo",
+	"Indian/Cocos",
+	"Africa/Algiers",
+	"Africa/Ceuta",
+	"Africa/Tunis",
+	"Arctic/Longyearbyen",
+	"Atlantic/Jan_Mayen",
+	"CET",
+	"Europe/Amsterdam",
+	"Europe/Andorra",
+	"Europe/Belgrade",
+	"Europe/Berlin",
+	"Europe/Bratislava",
+	"Europe/Brussels",
+	"Europe/Budapest",
+	"Europe/Busingen",
+	"Europe/Copenhagen",
+	"Europe/Gibraltar",
+	"Europe/Ljubljana",
+	"Europe/Luxembourg",
+	"Europe/Madrid",
+	"Europe/Malta",
+	"Europe/Monaco",
+	"Europe/Oslo",
+	"Europe/Paris",
+	"Europe/Podgorica",
+	"Europe/Prague",
+	"Europe/Rome",
+	"Europe/San_Marino",
+	"Europe/Sarajevo",
+	"Europe/Skopje",
+	"Europe/Stockholm",
+	"Europe/Tirane",
+	"Europe/Vaduz",
+	"Europe/Vatican",
+	"Europe/Vienna",
+	"Europe/Warsaw",
+	"Europe/Zagreb",
+	"Europe/Zurich",
+	"Poland",
+	"NZ-CHAT",
+	"Pacific/Chatham",
+	"Asia/Choibalsan",
+	"Pacific/Chuuk",
+	"Pacific/Truk",
+	"Pacific/Yap",
+	"Pacific/Rarotonga",
+	"America/Santiago",
+	"Antarctica/Palmer",
+	"Chile/Continental",
+	"America/Bogota",
+	"America/Bahia_Banderas",
+	"America/Belize",
+	"America/Chicago",
+	"America/Costa_Rica",
+	"America/El_Salvador",
+	"America/Guatemala",
+	"America/Havana",
+	"America/Indiana/Knox",
+	"America/Indiana/Tell_City",
+	"America/Knox_IN",
+	"America/Managua",
+	"America/Matamoros",
+	"America/Menominee",
+	"America/Merida",
+	"America/Mexico_City",
+	"America/Monterrey",
+	"America/North_Dakota/Beulah",
+	"America/North_Dakota/Center",
+	"America/North_Dakota/New_Salem",
+	"America/Rainy_River",
+	"America/Rankin_Inlet",
+	"America/Regina",
+	"America/Resolute",
+	"America/Swift_Current",
+	"America/Tegucigalpa",
+	"America/Winnipeg",
+	"Asia/Chongqing",
+	"Asia/Chungking",
+	"Asia/Harbin",
+	"Asia/Macao",
+	"Asia/Macau",
+	"Asia/Shanghai",
+	"Asia/Taipei",
+	"CST6CDT",
+	"Canada/Central",
+	"Canada/East-Saskatchewan",
+	"Canada/Saskatchewan",
+	"Cuba",
+	"Mexico/General",
+	"PRC",
+	"ROC",
+	"US/Central",
+	"US/Indiana-Starke",
+	"Atlantic/Cape_Verde",
+	"Indian/Christmas",
+	"Pacific/Guam",
+	"Pacific/Saipan",
+	"Antarctica/Davis",
+	"Antarctica/DumontDUrville",
+	"Chile/EasterIsland",
+	"Pacific/Easter",
+	"Africa/Asmara",
+	"Africa/Asmera",
+	"Africa/Dar_es_Salaam",
+	"Africa/Djibouti",
+	"Africa/Juba",
+	"Africa/Kampala",
+	"Africa/Khartoum",
+	"Africa/Mogadishu",
+	"Africa/Nairobi",
+	"Indian/Antananarivo",
+	"Indian/Comoro",
+	"Indian/Mayotte",
+	"America/Guayaquil",
+	"Africa/Cairo",
+	"Africa/Tripoli",
+	"Asia/Amman",
+	"Asia/Beirut",
+	"Asia/Damascus",
+	"Asia/Gaza",
+	"Asia/Hebron",
+	"Asia/Istanbul",
+	"Asia/Nicosia",
+	"EET",
+	"Egypt",
+	"Europe/Athens",
+	"Europe/Bucharest",
+	"Europe/Chisinau",
+	"Europe/Helsinki",
+	"Europe/Istanbul",
+	"Europe/Kaliningrad",
+	"Europe/Kiev",
+	"Europe/Mariehamn",
+	"Europe/Nicosia",
+	"Europe/Riga",
+	"Europe/Sofia",
+	"Europe/Tallinn",
+	"Europe/Tiraspol",
+	"Europe/Uzhgorod",
+	"Europe/Vilnius",
+	"Europe/Zaporozhye",
+	"Libya",
+	"Turkey",
+	"America/Scoresbysund",
+	"America/Atikokan",
+	"America/Cancun",
+	"America/Cayman",
+	"America/Coral_Harbour",
+	"America/Detroit",
+	"America/Fort_Wayne",
+	"America/Indiana/Indianapolis",
+	"America/Indiana/Marengo",
+	"America/Indiana/Petersburg",
+	"America/Indiana/Vevay",
+	"America/Indiana/Vincennes",
+	"America/Indiana/Winamac",
+	"America/Indianapolis",
+	"America/Iqaluit",
+	"America/Jamaica",
+	"America/Kentucky/Louisville",
+	"America/Kentucky/Monticello",
+	"America/Louisville",
+	"America/Montreal",
+	"America/Nassau",
+	"America/New_York",
+	"America/Nipigon",
+	"America/Panama",
+	"America/Pangnirtung",
+	"America/Port-au-Prince",
+	"America/Thunder_Bay",
+	"America/Toronto",
+	"Canada/Eastern",
+	"EST",
+	"EST5EDT",
+	"Jamaica",
+	"US/East-Indiana",
+	"US/Eastern",
+	"US/Michigan",
+	"Pacific/Fiji",
+	"Atlantic/Stanley",
+	"America/Noronha",
+	"Brazil/DeNoronha",
+	"Pacific/Galapagos",
+	"Pacific/Gambier",
+	"Asia/Tbilisi",
+	"America/Cayenne",
+	"Pacific/Tarawa",
+	"Africa/Abidjan",
+	"Africa/Accra",
+	"Africa/Bamako",
+	"Africa/Banjul",
+	"Africa/Bissau",
+	"Africa/Conakry",
+	"Africa/Dakar",
+	"Africa/Freetown",
+	"Africa/Lome",
+	"Africa/Monrovia",
+	"Africa/Nouakchott",
+	"Africa/Ouagadougou",
+	"Africa/Sao_Tome",
+	"Africa/Timbuktu",
+	"America/Danmarkshavn",
+	"Atlantic/Reykjavik",
+	"Atlantic/St_Helena",
+	"Eire",
+	"Etc/GMT",
+	"Etc/GMT+0",
+	"Etc/GMT-0",
+	"Etc/GMT0",
+	"Etc/Greenwich",
+	"Europe/Belfast",
+	"Europe/Dublin",
+	"Europe/Guernsey",
+	"Europe/Isle_of_Man",
+	"Europe/Jersey",
+	"Europe/London",
+	"GB",
+	"GB-Eire",
+	"GMT",
+	"GMT+0",
+	"GMT-0",
+	"GMT0",
+	"Greenwich",
+	"Iceland",
+	"Etc/GMT+1",
+	"Etc/GMT+10",
+	"Etc/GMT+11",
+	"Etc/GMT+12",
+	"Etc/GMT+2",
+	"Etc/GMT+3",
+	"Etc/GMT+4",
+	"Etc/GMT+5",
+	"Etc/GMT+6",
+	"Etc/GMT+7",
+	"Etc/GMT+8",
+	"Etc/GMT+9",
+	"Etc/GMT-1",
+	"Etc/GMT-10",
+	"Etc/GMT-11",
+	"Etc/GMT-12",
+	"Etc/GMT-13",
+	"Etc/GMT-14",
+	"Etc/GMT-2",
+	"Etc/GMT-3",
+	"Etc/GMT-4",
+	"Etc/GMT-5",
+	"Etc/GMT-6",
+	"Etc/GMT-7",
+	"Etc/GMT-8",
+	"Etc/GMT-9",
+	"Asia/Dubai",
+	"Asia/Muscat",
+	"Atlantic/South_Georgia",
+	"America/Guyana",
+	"Asia/Hong_Kong",
+	"Hongkong",
+	"Asia/Hovd",
+	"America/Adak",
+	"America/Atka",
+	"HST",
+	"Pacific/Honolulu",
+	"Pacific/Johnston",
+	"US/Aleutian",
+	"US/Hawaii",
+	"Asia/Bangkok",
+	"Asia/Ho_Chi_Minh",
+	"Asia/Phnom_Penh",
+	"Asia/Saigon",
+	"Asia/Vientiane",
+	"Indian/Chagos",
+	"Asia/Chita",
+	"Asia/Irkutsk",
+	"Asia/Tehran",
+	"Iran",
+	"Asia/Calcutta",
+	"Asia/Colombo",
+	"Asia/Jerusalem",
+	"Asia/Kolkata",
+	"Asia/Tel_Aviv",
+	"Israel",
+	"Asia/Tokyo",
+	"Japan",
+	"Asia/Bishkek",
+	"Pacific/Kosrae",
+	"Asia/Krasnoyarsk",
+	"Asia/Novokuznetsk",
+	"Asia/Pyongyang",
+	"Asia/Seoul",
+	"ROK",
+	"Australia/LHI",
+	"Australia/Lord_Howe",
+	"Pacific/Kiritimati",
+	"Asia/Magadan",
+	"Pacific/Marquesas",
+	"Antarctica/Mawson",
+	"MET",
+	"Kwajalein",
+	"Pacific/Kwajalein",
+	"Pacific/Majuro",
+	"Antarctica/Macquarie",
+	"Asia/Rangoon",
+	"Europe/Minsk",
+	"Europe/Moscow",
+	"Europe/Simferopol",
+	"Europe/Volgograd",
+	"W-SU",
+	"America/Boise",
+	"America/Cambridge_Bay",
+	"America/Chihuahua",
+	"America/Creston",
+	"America/Dawson_Creek",
+	"America/Denver",
+	"America/Edmonton",
+	"America/Fort_Nelson",
+	"America/Hermosillo",
+	"America/Inuvik",
+	"America/Mazatlan",
+	"America/Ojinaga",
+	"America/Phoenix",
+	"America/Shiprock",
+	"America/Yellowknife",
+	"Canada/Mountain",
+	"MST",
+	"MST7MDT",
+	"Mexico/BajaSur",
+	"Navajo",
+	"US/Arizona",
+	"US/Mountain",
+	"Indian/Mauritius",
+	"Indian/Maldives",
+	"Asia/Kuala_Lumpur",
+	"Asia/Kuching",
+	"Pacific/Noumea",
+	"Pacific/Norfolk",
+	"Asia/Novosibirsk",
+	"Asia/Kathmandu",
+	"Asia/Katmandu",
+	"Pacific/Nauru",
+	"America/St_Johns",
+	"Canada/Newfoundland",
+	"Pacific/Niue",
+	"Antarctica/McMurdo",
+	"Antarctica/South_Pole",
+	"NZ",
+	"Pacific/Auckland",
+	"Asia/Omsk",
+	"Asia/Oral",
+	"America/Lima",
+	"Asia/Kamchatka",
+	"Pacific/Port_Moresby",
+	"Pacific/Enderbury",
+	"Asia/Manila",
+	"Asia/Karachi",
+	"America/Miquelon",
+	"Pacific/Pohnpei",
+	"Pacific/Ponape",
+	"America/Dawson",
+	"America/Ensenada",
+	"America/Los_Angeles",
+	"America/Metlakatla",
+	"America/Santa_Isabel",
+	"America/Tijuana",
+	"America/Vancouver",
+	"America/Whitehorse",
+	"Canada/Pacific",
+	"Canada/Yukon",
+	"Mexico/BajaNorte",
+	"PST8PDT",
+	"Pacific/Pitcairn",
+	"US/Pacific",
+	"US/Pacific-New",
+	"Pacific/Palau",
+	"America/Asuncion",
+	"Asia/Qyzylorda",
+	"Indian/Reunion",
+	"Antarctica/Rothera",
+	"Asia/Sakhalin",
+	"Europe/Samara",
+	"Africa/Johannesburg",
+	"Africa/Maseru",
+	"Africa/Mbabane",
+	"Pacific/Guadalcanal",
+	"Indian/Mahe",
+	"Asia/Singapore",
+	"Singapore",
+	"Asia/Srednekolymsk",
+	"America/Paramaribo",
+	"Pacific/Midway",
+	"Pacific/Pago_Pago",
+	"Pacific/Samoa",
+	"US/Samoa",
+	"Antarctica/Syowa",
+	"Pacific/Tahiti",
+	"Indian/Kerguelen",
+	"Asia/Dushanbe",
+	"Pacific/Fakaofo",
+	"Asia/Dili",
+	"Asia/Ashgabat",
+	"Asia/Ashkhabad",
+	"Pacific/Tongatapu",
+	"Pacific/Funafuti",
+	"Etc/UCT",
+	"UCT",
+	"Asia/Ulaanbaatar",
+	"Asia/Ulan_Bator",
+	"Antarctica/Troll",
+	"Etc/UTC",
+	"Etc/Universal",
+	"Etc/Zulu",
+	"UTC",
+	"Universal",
+	"Zulu",
+	"America/Montevideo",
+	"Asia/Samarkand",
+	"Asia/Tashkent",
+	"America/Caracas",
+	"Asia/Ust-Nera",
+	"Asia/Vladivostok",
+	"Antarctica/Vostok",
+	"Pacific/Efate",
+	"Pacific/Wake",
+	"Africa/Windhoek",
+	"Africa/Bangui",
+	"Africa/Brazzaville",
+	"Africa/Douala",
+	"Africa/Kinshasa",
+	"Africa/Lagos",
+	"Africa/Libreville",
+	"Africa/Luanda",
+	"Africa/Malabo",
+	"Africa/Ndjamena",
+	"Africa/Niamey",
+	"Africa/Porto-Novo",
+	"Africa/Casablanca",
+	"Africa/El_Aaiun",
+	"Atlantic/Canary",
+	"Atlantic/Faeroe",
+	"Atlantic/Faroe",
+	"Atlantic/Madeira",
+	"Europe/Lisbon",
+	"Portugal",
+	"WET",
+	"Pacific/Wallis",
+	"America/Godthab",
+	"Asia/Jakarta",
+	"Asia/Pontianak",
+	"Asia/Jayapura",
+	"Asia/Makassar",
+	"Asia/Ujung_Pandang",
+	"Pacific/Apia",
+	"Asia/Kashgar",
+	"Asia/Urumqi",
+	"Asia/Khandyga",
+	"Asia/Yakutsk",
+	"Asia/Yekaterinburg",
+}
+
+const (
+	BaseDate   = "2006-01-02"
+	Time       = "15:04:05"
+	Month      = "January"
+	Year       = "2006"
+	Day        = "Sunday"
+	DayOfMonth = "_2"
+	TimePeriod = "PM"
+)
+
+type DateTimer interface {
+	UnixTime(v reflect.Value) error
+	Date() string
+	Time() string
+	MonthName() string
+	Year() string
+	DayOfWeek() string
+	DayOfMonth() string
+	Timestamp() string
+	Century() string
+	TimeZone() string
+	TimePeriod() string
+}
+
+var date DateTimer
+
+func getDateTimer() DateTimer {
+	mu.Lock()
+	defer mu.Unlock()
+
+	if date == nil {
+		date = &DateTime{}
+	}
+	return date
+}
+
+func SetDateTimer(d DateTimer) {
+	date = d
+}
+
+type DateTime struct {
+}
+
+// get unix time
+func (d DateTime) UnixTime(v reflect.Value) error {
+	kind := v.Kind()
+
+	if kind == reflect.Int64 {
+		v.SetInt(RandomUnixTime())
+	} else {
+		v.SetInt(0)
+	}
+	return nil
+}
+
+// format example BaseDate const
+func (d DateTime) Date() string {
+	return time.Unix(RandomUnixTime(), 0).Format(BaseDate)
+}
+
+func (d DateTime) Time() string {
+	return time.Unix(RandomUnixTime(), 0).Format(Time)
+}
+
+func (d DateTime) MonthName() string {
+	return time.Unix(RandomUnixTime(), 0).Format(Month)
+}
+
+func (d DateTime) Year() string {
+	return time.Unix(RandomUnixTime(), 0).Format(Year)
+}
+
+func (d DateTime) DayOfWeek() string {
+	return time.Unix(RandomUnixTime(), 0).Format(Day)
+}
+func (d DateTime) DayOfMonth() string {
+	return time.Unix(RandomUnixTime(), 0).Format(DayOfMonth)
+}
+
+func (d DateTime) Timestamp() string {
+	return time.Unix(RandomUnixTime(), 0).Format(fmt.Sprintf("%s %s", BaseDate, Time))
+}
+
+func (d DateTime) Century() string {
+	return randomElementFromSliceString(century)
+}
+
+func (d DateTime) TimeZone() string {
+	return randomElementFromSliceString(timezones)
+}
+
+func (d DateTime) TimePeriod() string {
+	return time.Unix(RandomUnixTime(), 0).Format(TimePeriod)
+}
+
+// helper function
+func RandomUnixTime() int64 {
+	return rand.Int63n(time.Now().Unix())
+}
diff --git a/faker.go b/faker.go
index cadab0a..52005d0 100644
--- a/faker.go
+++ b/faker.go
@@ -27,6 +27,7 @@ const (
 	Url                = "url"
 	IPV4               = "ipv4"
 	IPV6               = "ipv6"
+	PASSWORD           = "password"
 	LATITUDE           = "lat"
 	LONGITUDE          = "long"
 	CREDIT_CARD_NUMBER = "cc_number"
@@ -34,6 +35,26 @@ const (
 	PHONE_NUMBER       = "phone_number"
 	TOLL_FREE_NUMBER   = "tool_free_number"
 	E164_PHONE_NUMBER  = "e_164_phone_number"
+	TITLE_MALE         = "title_male"
+	TITLE_FEMALE       = "title_female"
+	FIRST_NAME_MALE    = "first_name_male"
+	FIRST_NAME_FEMALE  = "first_name_female"
+	LAST_NAME          = "last_name"
+	NAME               = "name"
+	UNIX_TIME          = "unix_time"
+	DATE               = "date"
+	TIME               = "time"
+	MONTH_NAME         = "month_name"
+	YEAR               = "year"
+	DAY_OF_WEEK        = "day_of_week"
+	DAY_OF_MONTH       = "day_of_month"
+	TIMESTAMP          = "timestamp"
+	CENTURY            = "century"
+	TIMEZONE           = "timezone"
+	TIME_PERIOD        = "time_period"
+	WORD               = "word"
+	SENTENCE           = "sentence"
+	SENTENCES          = "sentences"
 )
 
 var mapperTag = map[string]interface{}{
@@ -44,6 +65,7 @@ var mapperTag = map[string]interface{}{
 	UserName:           getNetworker().UserName,
 	IPV4:               getNetworker().Ipv4,
 	IPV6:               getNetworker().Ipv6,
+	PASSWORD:           getNetworker().Password,
 	CREDIT_CARD_TYPE:   getPayment().CreditCardType,
 	CREDIT_CARD_NUMBER: getPayment().CreditCardNumber,
 	LATITUDE:           getAddress().Latitude,
@@ -51,6 +73,26 @@ var mapperTag = map[string]interface{}{
 	PHONE_NUMBER:       getPhoner().PhoneNumber,
 	TOLL_FREE_NUMBER:   getPhoner().TollFreePhoneNumber,
 	E164_PHONE_NUMBER:  getPhoner().E164PhoneNumber,
+	TITLE_MALE:         getPerson().TitleMale,
+	TITLE_FEMALE:       getPerson().TitleFeMale,
+	FIRST_NAME_MALE:    getPerson().FirstNameMale,
+	FIRST_NAME_FEMALE:  getPerson().FirstNameFemale,
+	LAST_NAME:          getPerson().LastName,
+	NAME:               getPerson().Name,
+	UNIX_TIME:          getDateTimer().UnixTime,
+	DATE:               getDateTimer().Date,
+	TIME:               getDateTimer().Time,
+	MONTH_NAME:         getDateTimer().MonthName,
+	YEAR:               getDateTimer().Year,
+	DAY_OF_WEEK:        getDateTimer().DayOfWeek,
+	DAY_OF_MONTH:       getDateTimer().DayOfMonth,
+	TIMESTAMP:          getDateTimer().Timestamp,
+	CENTURY:            getDateTimer().Century,
+	TIMEZONE:           getDateTimer().TimeZone,
+	TIME_PERIOD:        getDateTimer().TimePeriod,
+	WORD:               getLorem().Word,
+	SENTENCE:           getLorem().Sentence,
+	SENTENCES:          getLorem().Sentences,
 }
 
 // Error when get fake from ptr
@@ -63,7 +105,7 @@ var ErrUnsupportedKind = "Unsupported kind: %s"
 var ErrValueNotPtr = "Not a pointer value"
 
 // Error when tag not supported
-var ErrTagNotSupported = "String Tag unsupported"
+var ErrTagNotSupported = "Tag unsupported"
 
 // Error when passed more arguments
 var ErrMoreArguments = "Passed more arguments than is possible : (%d)"
@@ -209,6 +251,8 @@ func setDataWithTag(v reflect.Value, tag string) error {
 		return userDefinedString(v, tag)
 	case reflect.Slice:
 		return setSliceData(v)
+	case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int8, reflect.Int16:
+		return userDefinedInt(v, tag)
 	}
 	return nil
 }
@@ -231,6 +275,14 @@ func userDefinedString(v reflect.Value, tag string) error {
 	return nil
 }
 
+func userDefinedInt(v reflect.Value, tag string) error {
+	if _, exist := mapperTag[tag]; !exist {
+		return errors.New(ErrTagNotSupported)
+	}
+	mapperTag[tag].(func(v reflect.Value) error)(v)
+	return nil
+}
+
 func randomString(n int) string {
 	b := make([]byte, n)
 	for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; {
@@ -273,7 +325,6 @@ func randomStringNumber(n int) string {
 / Get three parameters , only first mandatory and the rest are optional
 / --- If only set one parameter :  This means the minimum number of digits and the total number
 / --- If only set two parameters : First this is min digit and second max digit and the total number the difference between them
-/ --- If only three parameters: the third argument set Max count Digit
 */
 func RandomInt(parameters ...int) (p []int, err error) {
 	r := rand.New(rand.NewSource(time.Now().UnixNano()))
diff --git a/internet.go b/internet.go
index a57d793..1cdb707 100644
--- a/internet.go
+++ b/internet.go
@@ -46,6 +46,7 @@ type Networker interface {
 	UserName() string
 	Ipv4() string
 	Ipv6() string
+	Password() string
 }
 
 type Internet struct{}
@@ -95,3 +96,8 @@ func (internet Internet) Ipv6() string {
 	}
 	return net.IP(ip).To16().String()
 }
+
+// get hash password
+func (internet Internet) Password() string {
+	return randomString(50)
+}
diff --git a/lorem.go b/lorem.go
new file mode 100644
index 0000000..4b578c8
--- /dev/null
+++ b/lorem.go
@@ -0,0 +1,91 @@
+package faker
+
+import (
+	"fmt"
+	"strings"
+)
+
+var lorem DataFaker
+var wordList = []string{"alias", "consequatur", "aut", "perferendis", "sit", "voluptatem",
+	"accusantium", "doloremque", "aperiam", "eaque", "ipsa", "quae", "ab",
+	"illo", "inventore", "veritatis", "et", "quasi", "architecto",
+	"beatae", "vitae", "dicta", "sunt", "explicabo", "aspernatur", "aut",
+	"odit", "aut", "fugit", "sed", "quia", "consequuntur", "magni",
+	"dolores", "eos", "qui", "ratione", "voluptatem", "sequi", "nesciunt",
+	"neque", "dolorem", "ipsum", "quia", "dolor", "sit", "amet",
+	"consectetur", "adipisci", "velit", "sed", "quia", "non", "numquam",
+	"eius", "modi", "tempora", "incidunt", "ut", "labore", "et", "dolore",
+	"magnam", "aliquam", "quaerat", "voluptatem", "ut", "enim", "ad",
+	"minima", "veniam", "quis", "nostrum", "exercitationem", "ullam",
+	"corporis", "nemo", "enim", "ipsam", "voluptatem", "quia", "voluptas",
+	"sit", "suscipit", "laboriosam", "nisi", "ut", "aliquid", "ex", "ea",
+	"commodi", "consequatur", "quis", "autem", "vel", "eum", "iure",
+	"reprehenderit", "qui", "in", "ea", "voluptate", "velit", "esse",
+	"quam", "nihil", "molestiae", "et", "iusto", "odio", "dignissimos",
+	"ducimus", "qui", "blanditiis", "praesentium", "laudantium", "totam",
+	"rem", "voluptatum", "deleniti", "atque", "corrupti", "quos",
+	"dolores", "et", "quas", "molestias", "excepturi", "sint",
+	"occaecati", "cupiditate", "non", "provident", "sed", "ut",
+	"perspiciatis", "unde", "omnis", "iste", "natus", "error",
+	"similique", "sunt", "in", "culpa", "qui", "officia", "deserunt",
+	"mollitia", "animi", "id", "est", "laborum", "et", "dolorum", "fuga",
+	"et", "harum", "quidem", "rerum", "facilis", "est", "et", "expedita",
+	"distinctio", "nam", "libero", "tempore", "cum", "soluta", "nobis",
+	"est", "eligendi", "optio", "cumque", "nihil", "impedit", "quo",
+	"porro", "quisquam", "est", "qui", "minus", "id", "quod", "maxime",
+	"placeat", "facere", "possimus", "omnis", "voluptas", "assumenda",
+	"est", "omnis", "dolor", "repellendus", "temporibus", "autem",
+	"quibusdam", "et", "aut", "consequatur", "vel", "illum", "qui",
+	"dolorem", "eum", "fugiat", "quo", "voluptas", "nulla", "pariatur",
+	"at", "vero", "eos", "et", "accusamus", "officiis", "debitis", "aut",
+	"rerum", "necessitatibus", "saepe", "eveniet", "ut", "et",
+	"voluptates", "repudiandae", "sint", "et", "molestiae", "non",
+	"recusandae", "itaque", "earum", "rerum", "hic", "tenetur", "a",
+	"sapiente", "delectus", "ut", "aut", "reiciendis", "voluptatibus",
+	"maiores", "doloribus", "asperiores", "repellat"}
+
+type DataFaker interface {
+	Word() string
+	Sentence() string
+	Sentences() string
+}
+
+func SetDataFaker(d DataFaker) {
+	lorem = d
+}
+
+// Constructor
+func getLorem() DataFaker {
+	mu.Lock()
+	defer mu.Unlock()
+
+	if lorem == nil {
+		lorem = &Lorem{}
+	}
+	return lorem
+}
+
+type Lorem struct {
+}
+
+func (l Lorem) Word() string {
+	return randomElementFromSliceString(wordList)
+}
+func (l Lorem) Sentence() (sentence string) {
+	r, _ := RandomInt(1, 6)
+	for key, val := range r {
+		if key == 0 {
+			sentence += strings.Title(wordList[val] + " ")
+		} else {
+			sentence += wordList[val] + " "
+		}
+	}
+	return fmt.Sprintf("%s.", sentence)
+}
+
+func (l Lorem) Sentences() (sentences string) {
+	for i := 0; i < 3; i++ {
+		sentences += l.Sentence()
+	}
+	return sentences
+}
diff --git a/person.go b/person.go
new file mode 100644
index 0000000..ccd4730
--- /dev/null
+++ b/person.go
@@ -0,0 +1,147 @@
+package faker
+
+import (
+	"fmt"
+	"math/rand"
+)
+
+type Dowser interface {
+	TitleMale() string
+	TitleFeMale() string
+	FirstNameMale() string
+	FirstNameFemale() string
+	LastName() string
+	Name() string
+}
+
+var person Dowser
+var titlesMale = []string{
+	"Mr.", "Dr.", "Prof.",
+}
+var titlesFemale = []string{
+	"Mrs.", "Ms.", "Miss", "Dr.", "Prof.",
+}
+var firstNamesMale = []string{
+	"Aaron", "Abdiel", "Abdul", "Abdullah", "Abe", "Abel", "Abelardo", "Abner", "Abraham", "Adalberto", "Adam", "Adan", "Adelbert", "Adolf", "Adolfo", "Adolph", "Adolphus", "Adonis", "Adrain", "Adrian", "Adriel", "Adrien", "Afton", "Agustin", "Ahmad", "Ahmed", "Aidan", "Aiden", "Akeem", "Al", "Alan", "Albert", "Alberto", "Albin", "Alden", "Alec", "Alejandrin", "Alek", "Alessandro", "Alex", "Alexander", "Alexandre", "Alexandro", "Alexie", "Alexis", "Alexys", "Alexzander", "Alf", "Alfonso", "Alfonzo", "Alford", "Alfred", "Alfredo", "Ali", "Allan", "Allen", "Alphonso", "Alvah", "Alvis", "Amani", "Amari", "Ambrose", "Americo", "Amir", "Amos", "Amparo", "Anastacio", "Anderson", "Andre", "Andres", "Andrew", "Andy", "Angel", "Angelo", "Angus", "Anibal", "Ansel", "Ansley", "Anthony", "Antone", "Antonio", "Antwan", "Antwon", "Arch", "Archibald", "Arden", "Arely", "Ari", "Aric", "Ariel", "Arjun", "Arlo", "Armand", "Armando", "Armani", "Arnaldo", "Arne", "Arno", "Arnold", "Arnoldo", "Arnulfo", "Aron", "Art", "Arthur", "Arturo", "Arvel", "Arvid", "Ashton", "August", "Augustus", "Aurelio", "Austen", "Austin", "Austyn", "Avery", "Axel", "Ayden",
+	"Bailey", "Barney", "Baron", "Barrett", "Barry", "Bart", "Bartholome", "Barton", "Baylee", "Beau", "Bell", "Ben", "Benedict", "Benjamin", "Bennett", "Bennie", "Benny", "Benton", "Bernard", "Bernardo", "Bernhard", "Bernie", "Berry", "Berta", "Bertha", "Bertram", "Bertrand", "Bill", "Billy", "Blair", "Blaise", "Blake", "Blaze", "Bo", "Bobbie", "Bobby", "Boris", "Boyd", "Brad", "Braden", "Bradford", "Bradley", "Bradly", "Brady", "Braeden", "Brain", "Brando", "Brandon", "Brandt", "Brannon", "Branson", "Brant", "Braulio", "Braxton", "Brayan", "Brendan", "Brenden", "Brendon", "Brennan", "Brennon", "Brent", "Bret", "Brett", "Brian", "Brice", "Brock", "Broderick", "Brody", "Brook", "Brooks", "Brown", "Bruce", "Bryce", "Brycen", "Bryon", "Buck", "Bud", "Buddy", "Buford", "Burley", "Buster",
+	"Cade", "Caden", "Caesar", "Cale", "Caleb", "Camden", "Cameron", "Camren", "Camron", "Camryn", "Candelario", "Candido", "Carey", "Carleton", "Carlo", "Carlos", "Carmel", "Carmelo", "Carmine", "Carol", "Carroll", "Carson", "Carter", "Cary", "Casey", "Casimer", "Casimir", "Casper", "Ceasar", "Cecil", "Cedrick", "Celestino", "Cesar", "Chad", "Chadd", "Chadrick", "Chaim", "Chance", "Chandler", "Charles", "Charley", "Charlie", "Chase", "Chauncey", "Chaz", "Chelsey", "Chesley", "Chester", "Chet", "Chris", "Christ", "Christian", "Christop", "Christophe", "Christopher", "Cicero", "Cielo", "Clair", "Clark", "Claud", "Claude", "Clay", "Clemens", "Clement", "Cleo", "Cletus", "Cleve", "Cleveland", "Clifford", "Clifton", "Clint", "Clinton", "Clovis", "Cloyd", "Clyde", "Coby", "Cody", "Colby", "Cole", "Coleman", "Colin", "Collin", "Colt", "Colten", "Colton", "Columbus", "Conner", "Connor", "Conor", "Conrad", "Constantin", "Consuelo", "Cooper", "Corbin", "Cordelia", "Cordell", "Cornelius", "Cornell", "Cortez", "Cory", "Coty", "Coy", "Craig", "Crawford", "Cristian", "Cristina", "Cristobal", "Cristopher", "Cruz", "Cullen", "Curt", "Curtis", "Cyril", "Cyrus",
+	"Dagmar", "Dale", "Dallas", "Dallin", "Dalton", "Dameon", "Damian", "Damien", "Damion", "Damon", "Dan", "Dane", "D\"angelo", "Dangelo", "Danial", "Danny", "Dante", "Daren", "Darian", "Darien", "Dario", "Darion", "Darius", "Daron", "Darrel", "Darrell", "Darren", "Darrick", "Darrin", "Darrion", "Darron", "Darryl", "Darwin", "Daryl", "Dashawn", "Dave", "David", "Davin", "Davion", "Davon", "Davonte", "Dawson", "Dax", "Dayne", "Dayton", "Dean", "Deangelo", "Declan", "Dedric", "Dedrick", "Dee", "Deion", "Dejon", "Dejuan", "Delaney", "Delbert", "Dell", "Delmer", "Demarco", "Demarcus", "Demario", "Demetrius", "Demond", "Denis", "Dennis", "Deon", "Deondre", "Deontae", "Deonte", "Dereck", "Derek", "Derick", "Deron", "Derrick", "Deshaun", "Deshawn", "Desmond", "Destin", "Devan", "Devante", "Deven", "Devin", "Devon", "Devonte", "Devyn", "Dewayne", "Dewitt", "Dexter", "Diamond", "Diego", "Dillan", "Dillon", "Dimitri", "Dino", "Dion", "Dock", "Domenic", "Domenick", "Domenico", "Domingo", "Dominic", "Don", "Donald", "Donato", "Donavon", "Donnell", "Donnie", "Donny", "Dorcas", "Dorian", "Doris", "Dorthy", "Doug", "Douglas", "Doyle", "Drake", "Dudley", "Duncan", "Durward", "Dustin", "Dusty", "Dwight", "Dylan",
+	"Earl", "Earnest", "Easter", "Easton", "Ed", "Edd", "Eddie", "Edgar", "Edgardo", "Edison", "Edmond", "Edmund", "Eduardo", "Edward", "Edwardo", "Edwin", "Efrain", "Efren", "Einar", "Eino", "Eladio", "Elbert", "Eldon", "Eldred", "Eleazar", "Eli", "Elian", "Elias", "Eliezer", "Elijah", "Eliseo", "Elliot", "Elliott", "Ellis", "Ellsworth", "Elmer", "Elmo", "Elmore", "Eloy", "Elroy", "Elton", "Elvis", "Elwin", "Elwyn", "Emanuel", "Emerald", "Emerson", "Emery", "Emil", "Emile", "Emiliano", "Emilio", "Emmanuel", "Emmet", "Emmett", "Emmitt", "Emory", "Enid", "Enoch", "Enos", "Enrico", "Enrique", "Ephraim", "Eriberto", "Eric", "Erich", "Erick", "Erik", "Erin", "Erling", "Ernest", "Ernesto", "Ernie", "Ervin", "Erwin", "Esteban", "Estevan", "Ethan", "Ethel", "Eugene", "Eusebio", "Evan", "Evans", "Everardo", "Everett", "Evert", "Ewald", "Ewell", "Ezekiel", "Ezequiel", "Ezra",
+	"Fabian", "Faustino", "Fausto", "Favian", "Federico", "Felipe", "Felix", "Felton", "Fermin", "Fern", "Fernando", "Ferne", "Fidel", "Filiberto", "Finn", "Flavio", "Fletcher", "Florencio", "Florian", "Floy", "Floyd", "Ford", "Forest", "Forrest", "Foster", "Francesco", "Francis", "Francisco", "Franco", "Frank", "Frankie", "Franz", "Fred", "Freddie", "Freddy", "Frederic", "Frederick", "Frederik", "Fredrick", "Fredy", "Freeman", "Friedrich", "Fritz", "Furman",
+	"Gabe", "Gabriel", "Gaetano", "Gage", "Gardner", "Garett", "Garfield", "Garland", "Garnet", "Garnett", "Garret", "Garrett", "Garrick", "Garrison", "Garry", "Garth", "Gaston", "Gavin", "Gay", "Gayle", "Gaylord", "Gene", "General", "Gennaro", "Geo", "Geoffrey", "George", "Geovanni", "Geovanny", "Geovany", "Gerald", "Gerard", "Gerardo", "Gerhard", "German", "Gerson", "Gianni", "Gideon", "Gilbert", "Gilberto", "Giles", "Gillian", "Gino", "Giovani", "Giovanni", "Giovanny", "Giuseppe", "Glen", "Glennie", "Godfrey", "Golden", "Gonzalo", "Gordon", "Grady", "Graham", "Grant", "Granville", "Grayce", "Grayson", "Green", "Greg", "Gregg", "Gregorio", "Gregory", "Greyson", "Griffin", "Grover", "Guido", "Guillermo", "Guiseppe", "Gunnar", "Gunner", "Gus", "Gussie", "Gust", "Gustave", "Guy",
+	"Hadley", "Hailey", "Hal", "Haleigh", "Haley", "Halle", "Hank", "Hans", "Hardy", "Harley", "Harmon", "Harold", "Harrison", "Harry", "Harvey", "Haskell", "Hassan", "Hayden", "Hayley", "Hazel", "Hazle", "Heber", "Hector", "Helmer", "Henderson", "Henri", "Henry", "Herbert", "Herman", "Hermann", "Herminio", "Hershel", "Hester", "Hilario", "Hilbert", "Hillard", "Hilton", "Hipolito", "Hiram", "Hobart", "Holden", "Hollis", "Horace", "Horacio", "Houston", "Howard", "Howell", "Hoyt", "Hubert", "Hudson", "Hugh", "Humberto", "Hunter", "Hyman",
+	"Ian", "Ibrahim", "Ignacio", "Ignatius", "Ike", "Imani", "Immanuel", "Irving", "Irwin", "Isaac", "Isac", "Isadore", "Isai", "Isaiah", "Isaias", "Isidro", "Ismael", "Isom", "Israel", "Issac", "Izaiah",
+	"Jabari", "Jace", "Jacey", "Jacinto", "Jack", "Jackson", "Jacques", "Jaden", "Jadon", "Jaeden", "Jaiden", "Jaime", "Jairo", "Jake", "Jakob", "Jaleel", "Jalen", "Jalon", "Jamaal", "Jamal", "Jamar", "Jamarcus", "Jamel", "Jameson", "Jamey", "Jamie", "Jamil", "Jamir", "Jamison", "Jan", "Janick", "Jaquan", "Jared", "Jaren", "Jarod", "Jaron", "Jarred", "Jarrell", "Jarret", "Jarrett", "Jarrod", "Jarvis", "Jasen", "Jasmin", "Jason", "Jasper", "Javier", "Javon", "Javonte", "Jay", "Jayce", "Jaycee", "Jayde", "Jayden", "Jaydon", "Jaylan", "Jaylen", "Jaylin", "Jaylon", "Jayme", "Jayson", "Jean", "Jed", "Jedediah", "Jedidiah", "Jeff", "Jefferey", "Jeffery", "Jeffrey", "Jeffry", "Jennings", "Jensen", "Jerad", "Jerald", "Jeramie", "Jeramy", "Jerel", "Jeremie", "Jeremy", "Jermain", "Jermey", "Jerod", "Jerome", "Jeromy", "Jerrell", "Jerrod", "Jerrold", "Jerry", "Jess", "Jesse", "Jessie", "Jessy", "Jesus", "Jett", "Jettie", "Jevon", "Jillian", "Jimmie", "Jimmy", "Jo", "Joan", "Joany", "Joaquin", "Jocelyn", "Joe", "Joel", "Joesph", "Joey", "Johan", "Johann", "Johathan", "John", "Johnathan", "Johnathon", "Johnnie", "Johnny", "Johnpaul", "Johnson", "Jon", "Jonas", "Jonatan", "Jonathan", "Jonathon", "Jordan", "Jordi", "Jordon", "Jordy", "Jordyn", "Jorge", "Jose", "Joseph", "Josh", "Joshua", "Joshuah", "Josiah", "Josue", "Jovan", "Jovani", "Jovanny", "Jovany", "Judah", "Judd", "Judge", "Judson", "Jules", "Julian", "Julien", "Julio", "Julius", "Junior", "Junius", "Justen", "Justice", "Juston", "Justus", "Justyn", "Juvenal", "Juwan",
+	"Kacey", "Kade", "Kaden", "Kadin", "Kale", "Kaleb", "Kaleigh", "Kaley", "Kameron", "Kamren", "Kamron", "Kamryn", "Kane", "Kareem", "Karl", "Karley", "Karson", "Kay", "Kayden", "Kayleigh", "Kayley", "Keagan", "Keanu", "Keaton", "Keegan", "Keeley", "Keenan", "Keith", "Kellen", "Kelley", "Kelton", "Kelvin", "Ken", "Kendall", "Kendrick", "Kennedi", "Kennedy", "Kenneth", "Kennith", "Kenny", "Kenton", "Kenyon", "Keon", "Keshaun", "Keshawn", "Keven", "Kevin", "Kevon", "Keyon", "Keyshawn", "Khalid", "Khalil", "Kian", "Kiel", "Kieran", "Kiley", "Kim", "King", "Kip", "Kirk", "Kobe", "Koby", "Kody", "Kolby", "Kole", "Korbin", "Korey", "Kory", "Kraig", "Kris", "Kristian", "Kristofer", "Kristoffer", "Kristopher", "Kurt", "Kurtis", "Kyle", "Kyleigh", "Kyler",
+	"Ladarius", "Lafayette", "Lamar", "Lambert", "Lamont", "Lance", "Landen", "Lane", "Laron", "Larry", "Larue", "Laurel", "Lavern", "Laverna", "Laverne", "Lavon", "Lawrence", "Lawson", "Layne", "Lazaro", "Lee", "Leif", "Leland", "Lemuel", "Lennie", "Lenny", "Leo", "Leon", "Leonard", "Leonardo", "Leone", "Leonel", "Leopold", "Leopoldo", "Lesley", "Lester", "Levi", "Lew", "Lewis", "Lexus", "Liam", "Lincoln", "Lindsey", "Linwood", "Lionel", "Lisandro", "Llewellyn", "Lloyd", "Logan", "Lon", "London", "Lonnie", "Lonny", "Lonzo", "Lorenz", "Lorenza", "Lorenzo", "Louie", "Louisa", "Lourdes", "Louvenia", "Lowell", "Loy", "Loyal", "Lucas", "Luciano", "Lucio", "Lucious", "Lucius", "Ludwig", "Luigi", "Luis", "Lukas", "Lula", "Luther", "Lyric",
+	"Mac", "Macey", "Mack", "Mackenzie", "Madisen", "Madison", "Madyson", "Magnus", "Major", "Makenna", "Malachi", "Malcolm", "Mallory", "Manley", "Manuel", "Manuela", "Marc", "Marcel", "Marcelino", "Marcellus", "Marcelo", "Marco", "Marcos", "Marcus", "Mariano", "Mario", "Mark", "Markus", "Marley", "Marlin", "Marlon", "Marques", "Marquis", "Marshall", "Martin", "Marty", "Marvin", "Mason", "Mateo", "Mathew", "Mathias", "Matt", "Matteo", "Maurice", "Mauricio", "Maverick", "Mavis", "Max", "Maxime", "Maximilian", "Maximillian", "Maximo", "Maximus", "Maxine", "Maxwell", "Maynard", "Mckenna", "Mckenzie", "Mekhi", "Melany", "Melvin", "Melvina", "Merl", "Merle", "Merlin", "Merritt", "Mervin", "Micah", "Michael", "Michale", "Micheal", "Michel", "Miguel", "Mike", "Mikel", "Milan", "Miles", "Milford", "Miller", "Milo", "Milton", "Misael", "Mitchel", "Mitchell", "Modesto", "Mohamed", "Mohammad", "Mohammed", "Moises", "Monroe", "Monserrat", "Monserrate", "Montana", "Monte", "Monty", "Morgan", "Moriah", "Morris", "Mortimer", "Morton", "Mose", "Moses", "Moshe", "Muhammad", "Murl", "Murphy", "Murray", "Mustafa", "Myles", "Myrl", "Myron",
+	"Napoleon", "Narciso", "Nash", "Nasir", "Nat", "Nathan", "Nathanael", "Nathanial", "Nathaniel", "Nathen", "Neal", "Ned", "Neil", "Nels", "Nelson", "Nestor", "Newell", "Newton", "Nicholas", "Nicholaus", "Nick", "Nicklaus", "Nickolas", "Nico", "Nicola", "Nicolas", "Nigel", "Nikko", "Niko", "Nikolas", "Nils", "Noah", "Noble", "Noe", "Noel", "Nolan", "Norbert", "Norberto", "Norris", "Norval", "Norwood",
+	"Obie", "Oda", "Odell", "Okey", "Ola", "Olaf", "Ole", "Olen", "Olin", "Oliver", "Omari", "Omer", "Oral", "Oran", "Oren", "Orin", "Orion", "Orland", "Orlando", "Orlo", "Orrin", "Orval", "Orville", "Osbaldo", "Osborne", "Oscar", "Osvaldo", "Oswald", "Oswaldo", "Otho", "Otis", "Ottis", "Otto", "Owen",
+	"Pablo", "Paolo", "Paris", "Parker", "Patrick", "Paul", "Paxton", "Payton", "Pedro", "Percival", "Percy", "Perry", "Pete", "Peter", "Peyton", "Philip", "Pierce", "Pierre", "Pietro", "Porter", "Presley", "Preston", "Price", "Prince",
+	"Quentin", "Quincy", "Quinn", "Quinten", "Quinton",
+	"Rafael", "Raheem", "Rahul", "Raleigh", "Ralph", "Ramiro", "Ramon", "Randal", "Randall", "Randi", "Randy", "Ransom", "Raoul", "Raphael", "Rashad", "Rashawn", "Rasheed", "Raul", "Raven", "Ray", "Raymond", "Raymundo", "Reagan", "Reece", "Reed", "Reese", "Regan", "Reggie", "Reginald", "Reid", "Reilly", "Reinhold", "Remington", "Rene", "Reuben", "Rex", "Rey", "Reyes", "Reymundo", "Reynold", "Rhett", "Rhiannon", "Ricardo", "Richard", "Richie", "Richmond", "Rick", "Rickey", "Rickie", "Ricky", "Rico", "Rigoberto", "Riley", "Robb", "Robbie", "Robert", "Roberto", "Robin", "Rocio", "Rocky", "Rod", "Roderick", "Rodger", "Rodolfo", "Rodrick", "Rodrigo", "Roel", "Rogelio", "Roger", "Rogers", "Rolando", "Rollin", "Roman", "Ron", "Ronaldo", "Ronny", "Roosevelt", "Rory", "Rosario", "Roscoe", "Rosendo", "Ross", "Rowan", "Rowland", "Roy", "Royal", "Royce", "Ruben", "Rudolph", "Rudy", "Rupert", "Russ", "Russel", "Russell", "Rusty", "Ryan", "Ryann", "Ryder", "Rylan", "Ryleigh", "Ryley",
+	"Sage", "Saige", "Salvador", "Salvatore", "Sam", "Samir", "Sammie", "Sammy", "Samson", "Sanford", "Santa", "Santiago", "Santino", "Santos", "Saul", "Savion", "Schuyler", "Scot", "Scottie", "Scotty", "Seamus", "Sean", "Sebastian", "Sedrick", "Selmer", "Seth", "Shad", "Shane", "Shaun", "Shawn", "Shayne", "Sheldon", "Sheridan", "Sherman", "Sherwood", "Sid", "Sidney", "Sigmund", "Sigrid", "Sigurd", "Silas", "Sim", "Simeon", "Skye", "Skylar", "Sofia", "Soledad", "Solon", "Sonny", "Spencer", "Stan", "Stanford", "Stanley", "Stanton", "Stefan", "Stephan", "Stephen", "Stephon", "Sterling", "Steve", "Stevie", "Stewart", "Stone", "Stuart", "Sven", "Sydney", "Sylvan", "Sylvester",
+	"Tad", "Talon", "Tanner", "Tate", "Tatum", "Taurean", "Tavares", "Taylor", "Ted", "Terence", "Terrance", "Terrell", "Terrence", "Terrill", "Terry", "Tevin", "Thad", "Thaddeus", "Theo", "Theodore", "Theron", "Thomas", "Thurman", "Tillman", "Timmothy", "Timmy", "Timothy", "Tito", "Titus", "Tobin", "Toby", "Tod", "Tom", "Tomas", "Tommie", "Toney", "Toni", "Tony", "Torey", "Torrance", "Torrey", "Toy", "Trace", "Tracey", "Travis", "Travon", "Tre", "Tremaine", "Tremayne", "Trent", "Trenton", "Trever", "Trevion", "Trevor", "Trey", "Tristian", "Tristin", "Triston", "Troy", "Trystan", "Turner", "Tyler", "Tyree", "Tyreek", "Tyrel", "Tyrell", "Tyrese", "Tyrique", "Tyshawn", "Tyson",
+	"Ubaldo", "Ulices", "Ulises", "Unique", "Urban", "Uriah", "Uriel",
+	"Valentin", "Van", "Vance", "Vaughn", "Vern", "Verner", "Vernon", "Vicente", "Victor", "Vidal", "Vince", "Vincent", "Vincenzo", "Vinnie", "Virgil", "Vito", "Vladimir",
+	"Wade", "Waino", "Waldo", "Walker", "Wallace", "Walter", "Walton", "Ward", "Warren", "Watson", "Waylon", "Wayne", "Webster", "Weldon", "Wellington", "Wendell", "Werner", "Westley", "Weston", "Wilber", "Wilbert", "Wilburn", "Wiley", "Wilford", "Wilfred", "Wilfredo", "Wilfrid", "Wilhelm", "Will", "Willard", "William", "Willis", "Willy", "Wilmer", "Wilson", "Wilton", "Winfield", "Winston", "Woodrow", "Wyatt", "Wyman",
+	"Xavier", "Xzavier", "Xander",
+	"Zachariah", "Zachary", "Zachery", "Zack", "Zackary", "Zackery", "Zakary", "Zander", "Zane", "Zechariah", "Zion",
+}
+var firstNamesFemale = []string{
+	"Aaliyah", "Abagail", "Abbey", "Abbie", "Abbigail", "Abby", "Abigail", "Abigale", "Abigayle", "Ada", "Adah", "Adaline", "Addie", "Addison", "Adela", "Adele", "Adelia", "Adeline", "Adell", "Adella", "Adelle", "Aditya", "Adriana", "Adrianna", "Adrienne", "Aglae", "Agnes", "Agustina", "Aida", "Aileen", "Aimee", "Aisha", "Aiyana", "Alaina", "Alana", "Alanis", "Alanna", "Alayna", "Alba", "Alberta", "Albertha", "Albina", "Alda", "Aleen", "Alejandra", "Alena", "Alene", "Alessandra", "Alessia", "Aletha", "Alexa", "Alexandra", "Alexandrea", "Alexandria", "Alexandrine", "Alexane", "Alexanne", "Alfreda", "Alia", "Alice", "Alicia", "Alisa", "Alisha", "Alison", "Alivia", "Aliya", "Aliyah", "Aliza", "Alize", "Allene", "Allie", "Allison", "Ally", "Alta", "Althea", "Alva", "Alvena", "Alvera", "Alverta", "Alvina", "Alyce", "Alycia", "Alysa", "Alysha", "Alyson", "Alysson", "Amalia", "Amanda", "Amara", "Amaya", "Amber", "Amelia", "Amelie", "Amely", "America", "Amie", "Amina", "Amira", "Amiya", "Amy", "Amya", "Ana", "Anabel", "Anabelle", "Anahi", "Anais", "Anastasia", "Andreane", "Andreanne", "Angela", "Angelica", "Angelina", "Angeline", "Angelita", "Angie", "Anika", "Anissa", "Anita", "Aniya", "Aniyah", "Anjali", "Anna", "Annabel", "Annabell", "Annabelle", "Annalise", "Annamae", "Annamarie", "Anne", "Annetta", "Annette", "Annie", "Antoinette", "Antonetta", "Antonette", "Antonia", "Antonietta", "Antonina", "Anya", "April", "Ara", "Araceli", "Aracely", "Ardella", "Ardith", "Ariane", "Arianna", "Arielle", "Arlene", "Arlie", "Arvilla", "Aryanna", "Asa", "Asha", "Ashlee", "Ashleigh", "Ashley", "Ashly", "Ashlynn", "Ashtyn", "Asia", "Assunta", "Astrid", "Athena", "Aubree", "Aubrey", "Audie", "Audra", "Audreanne", "Audrey", "Augusta", "Augustine", "Aurelia", "Aurelie", "Aurore", "Autumn", "Ava", "Avis", "Ayana", "Ayla", "Aylin",
+	"Baby", "Bailee", "Barbara", "Beatrice", "Beaulah", "Bella", "Belle", "Berenice", "Bernadette", "Bernadine", "Berneice", "Bernice", "Berniece", "Bernita", "Bert", "Beryl", "Bessie", "Beth", "Bethany", "Bethel", "Betsy", "Bette", "Bettie", "Betty", "Bettye", "Beulah", "Beverly", "Bianka", "Billie", "Birdie", "Blanca", "Blanche", "Bonita", "Bonnie", "Brandi", "Brandy", "Brandyn", "Breana", "Breanna", "Breanne", "Brenda", "Brenna", "Bria", "Briana", "Brianne", "Bridget", "Bridgette", "Bridie", "Brielle", "Brigitte", "Brionna", "Brisa", "Britney", "Brittany", "Brooke", "Brooklyn", "Bryana", "Bulah", "Burdette", "Burnice",
+	"Caitlyn", "Caleigh", "Cali", "Calista", "Callie", "Camila", "Camilla", "Camille", "Camylle", "Candace", "Candice", "Candida", "Cara", "Carissa", "Carlee", "Carley", "Carli", "Carlie", "Carlotta", "Carmela", "Carmella", "Carmen", "Carolanne", "Carole", "Carolina", "Caroline", "Carolyn", "Carolyne", "Carrie", "Casandra", "Cassandra", "Cassandre", "Cassidy", "Cassie", "Catalina", "Caterina", "Catharine", "Catherine", "Cathrine", "Cathryn", "Cathy", "Cayla", "Cecelia", "Cecile", "Cecilia", "Celestine", "Celia", "Celine", "Chanel", "Chanelle", "Charity", "Charlene", "Charlotte", "Chasity", "Chaya", "Chelsea", "Chelsie", "Cheyanne", "Cheyenne", "Chloe", "Christa", "Christelle", "Christiana", "Christina", "Christine", "Christy", "Chyna", "Ciara", "Cierra", "Cindy", "Citlalli", "Claire", "Clara", "Clarabelle", "Clare", "Clarissa", "Claudia", "Claudie", "Claudine", "Clementina", "Clementine", "Clemmie", "Cleora", "Cleta", "Clotilde", "Colleen", "Concepcion", "Connie", "Constance", "Cora", "Coralie", "Cordia", "Cordie", "Corene", "Corine", "Corrine", "Cortney", "Courtney", "Creola", "Cristal", "Crystal", "Crystel", "Cydney", "Cynthia",
+	"Dahlia", "Daija", "Daisha", "Daisy", "Dakota", "Damaris", "Dana", "Dandre", "Daniela", "Daniella", "Danielle", "Danika", "Dannie", "Danyka", "Daphne", "Daphnee", "Daphney", "Darby", "Dariana", "Darlene", "Dasia", "Dawn", "Dayana", "Dayna", "Deanna", "Deborah", "Deja", "Dejah", "Delfina", "Delia", "Delilah", "Della", "Delores", "Delpha", "Delphia", "Delphine", "Delta", "Demetris", "Dena", "Desiree", "Dessie", "Destany", "Destinee", "Destiney", "Destini", "Destiny", "Diana", "Dianna", "Dina", "Dixie", "Dolly", "Dolores", "Domenica", "Dominique", "Donna", "Dora", "Dorothea", "Dorothy", "Dorris", "Dortha", "Dovie", "Drew", "Duane", "Dulce",
+	"Earlene", "Earline", "Earnestine", "Ebba", "Ebony", "Eda", "Eden", "Edna", "Edwina", "Edyth", "Edythe", "Effie", "Eileen", "Elaina", "Elda", "Eldora", "Eldridge", "Eleanora", "Eleanore", "Electa", "Elena", "Elenor", "Elenora", "Eleonore", "Elfrieda", "Eliane", "Elinor", "Elinore", "Elisa", "Elisabeth", "Elise", "Elisha", "Elissa", "Eliza", "Elizabeth", "Ella", "Ellen", "Ellie", "Elmira", "Elna", "Elnora", "Elody", "Eloisa", "Eloise", "Elouise", "Elsa", "Else", "Elsie", "Elta", "Elva", "Elvera", "Elvie", "Elyse", "Elyssa", "Elza", "Emelia", "Emelie", "Emely", "Emie", "Emilia", "Emilie", "Emily", "Emma", "Emmalee", "Emmanuelle", "Emmie", "Emmy", "Ena", "Enola", "Era", "Erica", "Ericka", "Erika", "Erna", "Ernestina", "Ernestine", "Eryn", "Esmeralda", "Esperanza", "Esta", "Estefania", "Estel", "Estell", "Estella", "Estelle", "Esther", "Estrella", "Etha", "Ethelyn", "Ethyl", "Ettie", "Eudora", "Eugenia", "Eula", "Eulah", "Eulalia", "Euna", "Eunice", "Eva", "Evalyn", "Evangeline", "Eve", "Eveline", "Evelyn", "Everette", "Evie",
+	"Fabiola", "Fae", "Fannie", "Fanny", "Fatima", "Fay", "Faye", "Felicia", "Felicita", "Felicity", "Felipa", "Filomena", "Fiona", "Flavie", "Fleta", "Flo", "Florence", "Florida", "Florine", "Flossie", "Frances", "Francesca", "Francisca", "Freda", "Frederique", "Freeda", "Freida", "Frida", "Frieda",
+	"Gabriella", "Gabrielle", "Gail", "Genesis", "Genevieve", "Genoveva", "Georgette", "Georgiana", "Georgianna", "Geraldine", "Gerda", "Germaine", "Gerry", "Gertrude", "Gia", "Gilda", "Gina", "Giovanna", "Gisselle", "Gladyce", "Gladys", "Glenda", "Glenna", "Gloria", "Golda", "Grace", "Gracie", "Graciela", "Gregoria", "Greta", "Gretchen", "Guadalupe", "Gudrun", "Gwen", "Gwendolyn",
+	"Hailee", "Hailie", "Halie", "Hallie", "Hanna", "Hannah", "Harmony", "Hassie", "Hattie", "Haven", "Haylee", "Haylie", "Heath", "Heather", "Heaven", "Heidi", "Helen", "Helena", "Helene", "Helga", "Hellen", "Heloise", "Henriette", "Hermina", "Herminia", "Herta", "Hertha", "Hettie", "Hilda", "Hildegard", "Hillary", "Hilma", "Hollie", "Holly", "Hope", "Hortense", "Hosea", "Hulda",
+	"Icie", "Ida", "Idell", "Idella", "Ila", "Ilene", "Iliana", "Ima", "Imelda", "Imogene", "Ines", "Irma", "Isabel", "Isabell", "Isabella", "Isabelle", "Isobel", "Itzel", "Iva", "Ivah", "Ivory", "Ivy", "Izabella",
+	"Jacinthe", "Jackeline", "Jackie", "Jacklyn", "Jacky", "Jaclyn", "Jacquelyn", "Jacynthe", "Jada", "Jade", "Jadyn", "Jaida", "Jailyn", "Jakayla", "Jalyn", "Jammie", "Jana", "Janae", "Jane", "Janelle", "Janessa", "Janet", "Janice", "Janie", "Janis", "Janiya", "Jannie", "Jany", "Jaquelin", "Jaqueline", "Jaunita", "Jayda", "Jayne", "Jazlyn", "Jazmin", "Jazmyn", "Jazmyne", "Jeanette", "Jeanie", "Jeanne", "Jena", "Jenifer", "Jennie", "Jennifer", "Jennyfer", "Jermaine", "Jessica", "Jessika", "Jessyca", "Jewel", "Jewell", "Joana", "Joanie", "Joanne", "Joannie", "Joanny", "Jodie", "Jody", "Joelle", "Johanna", "Jolie", "Jordane", "Josefa", "Josefina", "Josephine", "Josiane", "Josianne", "Josie", "Joy", "Joyce", "Juana", "Juanita", "Jude", "Judy", "Julia", "Juliana", "Julianne", "Julie", "Juliet", "June", "Justina", "Justine",
+	"Kaci", "Kacie", "Kaela", "Kaelyn", "Kaia", "Kailee", "Kailey", "Kailyn", "Kaitlin", "Kaitlyn", "Kali", "Kallie", "Kamille", "Kara", "Karelle", "Karen", "Kari", "Kariane", "Karianne", "Karina", "Karine", "Karlee", "Karli", "Karlie", "Karolann", "Kasandra", "Kasey", "Kassandra", "Katarina", "Katelin", "Katelyn", "Katelynn", "Katharina", "Katherine", "Katheryn", "Kathleen", "Kathlyn", "Kathryn", "Kathryne", "Katlyn", "Katlynn", "Katrina", "Katrine", "Kattie", "Kavon", "Kaya", "Kaycee", "Kayla", "Kaylah", "Kaylee", "Kayli", "Kaylie", "Kaylin", "Keara", "Keely", "Keira", "Kelli", "Kellie", "Kelly", "Kelsi", "Kelsie", "Kendra", "Kenna", "Kenya", "Kenyatta", "Kiana", "Kianna", "Kiara", "Kiarra", "Kiera", "Kimberly", "Kira", "Kirsten", "Kirstin", "Kitty", "Krista", "Kristin", "Kristina", "Kristy", "Krystal", "Krystel", "Krystina", "Kyla", "Kylee", "Kylie", "Kyra",
+	"Lacey", "Lacy", "Laila", "Laisha", "Laney", "Larissa", "Laura", "Lauren", "Laurence", "Lauretta", "Lauriane", "Laurianne", "Laurie", "Laurine", "Laury", "Lauryn", "Lavada", "Lavina", "Lavinia", "Lavonne", "Layla", "Lea", "Leann", "Leanna", "Leanne", "Leatha", "Leda", "Leila", "Leilani", "Lela", "Lelah", "Lelia", "Lempi", "Lenna", "Lenora", "Lenore", "Leola", "Leonie", "Leonor", "Leonora", "Leora", "Lera", "Leslie", "Lesly", "Lessie", "Leta", "Letha", "Letitia", "Lexi", "Lexie", "Lia", "Liana", "Libbie", "Libby", "Lila", "Lilian", "Liliana", "Liliane", "Lilla", "Lillian", "Lilliana", "Lillie", "Lilly", "Lily", "Lilyan", "Lina", "Linda", "Lindsay", "Linnea", "Linnie", "Lisa", "Lisette", "Litzy", "Liza", "Lizeth", "Lizzie", "Lois", "Lola", "Lolita", "Loma", "Lonie", "Lora", "Loraine", "Loren", "Lorena", "Lori", "Lorine", "Lorna", "Lottie", "Lou", "Loyce", "Lucie", "Lucienne", "Lucile", "Lucinda", "Lucy", "Ludie", "Lue", "Luella", "Luisa", "Lulu", "Luna", "Lupe", "Lura", "Lurline", "Luz", "Lyda", "Lydia", "Lyla", "Lynn", "Lysanne",
+	"Mabel", "Mabelle", "Mable", "Maci", "Macie", "Macy", "Madaline", "Madalyn", "Maddison", "Madeline", "Madelyn", "Madelynn", "Madge", "Madie", "Madilyn", "Madisyn", "Madonna", "Mae", "Maegan", "Maeve", "Mafalda", "Magali", "Magdalen", "Magdalena", "Maggie", "Magnolia", "Maia", "Maida", "Maiya", "Makayla", "Makenzie", "Malika", "Malinda", "Mallie", "Malvina", "Mandy", "Mara", "Marcelina", "Marcella", "Marcelle", "Marcia", "Margaret", "Margarete", "Margarett", "Margaretta", "Margarette", "Margarita", "Marge", "Margie", "Margot", "Margret", "Marguerite", "Maria", "Mariah", "Mariam", "Marian", "Mariana", "Mariane", "Marianna", "Marianne", "Maribel", "Marie", "Mariela", "Marielle", "Marietta", "Marilie", "Marilou", "Marilyne", "Marina", "Marion", "Marisa", "Marisol", "Maritza", "Marjolaine", "Marjorie", "Marjory", "Marlee", "Marlen", "Marlene", "Marquise", "Marta", "Martina", "Martine", "Mary", "Maryam", "Maryjane", "Maryse", "Mathilde", "Matilda", "Matilde", "Mattie", "Maud", "Maude", "Maudie", "Maureen", "Maurine", "Maxie", "Maximillia", "May", "Maya", "Maybell", "Maybelle", "Maye", "Maymie", "Mayra", "Mazie", "Mckayla", "Meagan", "Meaghan", "Meda", "Megane", "Meggie", "Meghan", "Melba", "Melisa", "Melissa", "Mellie", "Melody", "Melyna", "Melyssa", "Mercedes", "Meredith", "Mertie", "Meta", "Mia", "Micaela", "Michaela", "Michele", "Michelle", "Mikayla", "Millie", "Mina", "Minerva", "Minnie", "Miracle", "Mireille", "Mireya", "Missouri", "Misty", "Mittie", "Modesta", "Mollie", "Molly", "Mona", "Monica", "Monique", "Mossie", "Mozell", "Mozelle", "Muriel", "Mya", "Myah", "Mylene", "Myra", "Myriam", "Myrna", "Myrtice", "Myrtie", "Myrtis", "Myrtle",
+	"Nadia", "Nakia", "Name", "Nannie", "Naomi", "Naomie", "Natalia", "Natalie", "Natasha", "Nayeli", "Nedra", "Neha", "Nelda", "Nella", "Nelle", "Nellie", "Neoma", "Nettie", "Neva", "Nia", "Nichole", "Nicole", "Nicolette", "Nikita", "Nikki", "Nina", "Noelia", "Noemi", "Noemie", "Noemy", "Nola", "Nona", "Nora", "Norene", "Norma", "Nova", "Novella", "Nya", "Nyah", "Nyasia",
+	"Oceane", "Ocie", "Octavia", "Odessa", "Odie", "Ofelia", "Oleta", "Olga", "Ollie", "Oma", "Ona", "Onie", "Opal", "Ophelia", "Ora", "Orie", "Orpha", "Otha", "Otilia", "Ottilie", "Ova", "Ozella",
+	"Paige", "Palma", "Pamela", "Pansy", "Pascale", "Pasquale", "Pat", "Patience", "Patricia", "Patsy", "Pattie", "Paula", "Pauline", "Pearl", "Pearlie", "Pearline", "Peggie", "Penelope", "Petra", "Phoebe", "Phyllis", "Pink", "Pinkie", "Piper", "Polly", "Precious", "Princess", "Priscilla", "Providenci", "Prudence",
+	"Queen", "Queenie",
+	"Rachael", "Rachel", "Rachelle", "Rae", "Raegan", "Rafaela", "Rahsaan", "Raina", "Ramona", "Raphaelle", "Raquel", "Reanna", "Reba", "Rebeca", "Rebecca", "Rebeka", "Rebekah", "Reina", "Renee", "Ressie", "Reta", "Retha", "Retta", "Reva", "Reyna", "Rhea", "Rhianna", "Rhoda", "Rita", "River", "Roberta", "Robyn", "Roma", "Romaine", "Rosa", "Rosalee", "Rosalia", "Rosalind", "Rosalinda", "Rosalyn", "Rosamond", "Rosanna", "Rose", "Rosella", "Roselyn", "Rosemarie", "Rosemary", "Rosetta", "Rosie", "Rosina", "Roslyn", "Rossie", "Rowena", "Roxane", "Roxanne", "Rozella", "Rubie", "Ruby", "Rubye", "Ruth", "Ruthe", "Ruthie", "Rylee",
+	"Sabina", "Sabrina", "Sabryna", "Sadie", "Sadye", "Sallie", "Sally", "Salma", "Samanta", "Samantha", "Samara", "Sandra", "Sandrine", "Sandy", "Santina", "Sarah", "Sarai", "Sarina", "Sasha", "Savanah", "Savanna", "Savannah", "Scarlett", "Selena", "Selina", "Serena", "Serenity", "Shaina", "Shakira", "Shana", "Shanel", "Shanelle", "Shania", "Shanie", "Shaniya", "Shanna", "Shannon", "Shanny", "Shanon", "Shany", "Sharon", "Shawna", "Shaylee", "Shayna", "Shea", "Sheila", "Shemar", "Shirley", "Shyann", "Shyanne", "Sibyl", "Sienna", "Sierra", "Simone", "Sincere", "Sister", "Skyla", "Sonia", "Sonya", "Sophia", "Sophie", "Stacey", "Stacy", "Stefanie", "Stella", "Stephania", "Stephanie", "Stephany", "Summer", "Sunny", "Susan", "Susana", "Susanna", "Susie", "Suzanne", "Syble", "Sydnee", "Sydni", "Sydnie", "Sylvia",
+	"Tabitha", "Talia", "Tamara", "Tamia", "Tania", "Tanya", "Tara", "Taryn", "Tatyana", "Taya", "Teagan", "Telly", "Teresa", "Tess", "Tessie", "Thalia", "Thea", "Thelma", "Theodora", "Theresa", "Therese", "Theresia", "Thora", "Tia", "Tiana", "Tianna", "Tiara", "Tierra", "Tiffany", "Tina", "Tomasa", "Tracy", "Tressa", "Tressie", "Treva", "Trinity", "Trisha", "Trudie", "Trycia", "Twila", "Tyra",
+	"Una", "Ursula",
+	"Vada", "Valentina", "Valentine", "Valerie", "Vallie", "Vanessa", "Veda", "Velda", "Vella", "Velma", "Velva", "Vena", "Verda", "Verdie", "Vergie", "Verla", "Verlie", "Verna", "Vernice", "Vernie", "Verona", "Veronica", "Vesta", "Vicenta", "Vickie", "Vicky", "Victoria", "Vida", "Vilma", "Vincenza", "Viola", "Violet", "Violette", "Virgie", "Virginia", "Virginie", "Vita", "Viva", "Vivian", "Viviane", "Vivianne", "Vivien", "Vivienne",
+	"Wanda", "Wava", "Wendy", "Whitney", "Wilhelmine", "Willa", "Willie", "Willow", "Wilma", "Winifred", "Winnifred", "Winona",
+	"Yadira", "Yasmeen", "Yasmin", "Yasmine", "Yazmin", "Yesenia", "Yessenia", "Yolanda", "Yoshiko", "Yvette", "Yvonne",
+	"Zaria", "Zelda", "Zella", "Zelma", "Zena", "Zetta", "Zita", "Zoe", "Zoey", "Zoie", "Zoila", "Zola", "Zora", "Zula",
+}
+var lastNames = []string{
+	"Abbott", "Abernathy", "Abshire", "Adams", "Altenwerth", "Anderson", "Ankunding", "Armstrong", "Auer", "Aufderhar",
+	"Bahringer", "Bailey", "Balistreri", "Barrows", "Bartell", "Bartoletti", "Barton", "Bashirian", "Batz", "Bauch", "Baumbach", "Bayer", "Beahan", "Beatty", "Bechtelar", "Becker", "Bednar", "Beer", "Beier", "Berge", "Bergnaum", "Bergstrom", "Bernhard", "Bernier", "Bins", "Blanda", "Blick", "Block", "Bode", "Boehm", "Bogan", "Bogisich", "Borer", "Bosco", "Botsford", "Boyer", "Boyle", "Bradtke", "Brakus", "Braun", "Breitenberg", "Brekke", "Brown", "Bruen", "Buckridge",
+	"Carroll", "Carter", "Cartwright", "Casper", "Cassin", "Champlin", "Christiansen", "Cole", "Collier", "Collins", "Conn", "Connelly", "Conroy", "Considine", "Corkery", "Cormier", "Corwin", "Cremin", "Crist", "Crona", "Cronin", "Crooks", "Cruickshank", "Cummerata", "Cummings",
+	"Dach", "D\"Amore", "Daniel", "Dare", "Daugherty", "Davis", "Deckow", "Denesik", "Dibbert", "Dickens", "Dicki", "Dickinson", "Dietrich", "Donnelly", "Dooley", "Douglas", "Doyle", "DuBuque", "Durgan",
+	"Ebert", "Effertz", "Eichmann", "Emard", "Emmerich", "Erdman", "Ernser", "Fadel",
+	"Fahey", "Farrell", "Fay", "Feeney", "Feest", "Feil", "Ferry", "Fisher", "Flatley", "Frami", "Franecki", "Friesen", "Fritsch", "Funk",
+	"Gaylord", "Gerhold", "Gerlach", "Gibson", "Gislason", "Gleason", "Gleichner", "Glover", "Goldner", "Goodwin", "Gorczany", "Gottlieb", "Goyette", "Grady", "Graham", "Grant", "Green", "Greenfelder", "Greenholt", "Grimes", "Gulgowski", "Gusikowski", "Gutkowski", "Gutmann",
+	"Haag", "Hackett", "Hagenes", "Hahn", "Haley", "Halvorson", "Hamill", "Hammes", "Hand", "Hane", "Hansen", "Harber", "Harris", "Hartmann", "Harvey", "Hauck", "Hayes", "Heaney", "Heathcote", "Hegmann", "Heidenreich", "Heller", "Herman", "Hermann", "Hermiston", "Herzog", "Hessel", "Hettinger", "Hickle", "Hilll", "Hills", "Hilpert", "Hintz", "Hirthe", "Hodkiewicz", "Hoeger", "Homenick", "Hoppe", "Howe", "Howell", "Hudson", "Huel", "Huels", "Hyatt",
+	"Jacobi", "Jacobs", "Jacobson", "Jakubowski", "Jaskolski", "Jast", "Jenkins", "Jerde", "Johns", "Johnson", "Johnston", "Jones",
+	"Kassulke", "Kautzer", "Keebler", "Keeling", "Kemmer", "Kerluke", "Kertzmann", "Kessler", "Kiehn", "Kihn", "Kilback", "King", "Kirlin", "Klein", "Kling", "Klocko", "Koch", "Koelpin", "Koepp", "Kohler", "Konopelski", "Koss", "Kovacek", "Kozey", "Krajcik", "Kreiger", "Kris", "Kshlerin", "Kub", "Kuhic", "Kuhlman", "Kuhn", "Kulas", "Kunde", "Kunze", "Kuphal", "Kutch", "Kuvalis",
+	"Labadie", "Lakin", "Lang", "Langosh", "Langworth", "Larkin", "Larson", "Leannon", "Lebsack", "Ledner", "Leffler", "Legros", "Lehner", "Lemke", "Lesch", "Leuschke", "Lind", "Lindgren", "Littel", "Little", "Lockman", "Lowe", "Lubowitz", "Lueilwitz", "Luettgen", "Lynch",
+	"Macejkovic", "Maggio", "Mann", "Mante", "Marks", "Marquardt", "Marvin", "Mayer", "Mayert", "McClure", "McCullough", "McDermott", "McGlynn", "McKenzie", "McLaughlin", "Medhurst", "Mertz", "Metz", "Miller", "Mills", "Mitchell", "Moen", "Mohr", "Monahan", "Moore", "Morar", "Morissette", "Mosciski", "Mraz", "Mueller", "Muller", "Murazik", "Murphy", "Murray",
+	"Nader", "Nicolas", "Nienow", "Nikolaus", "Nitzsche", "Nolan",
+	"Oberbrunner", "O\"Connell", "O\"Conner", "O\"Hara", "O\"Keefe", "O\"Kon", "Okuneva", "Olson", "Ondricka", "O\"Reilly", "Orn", "Ortiz", "Osinski",
+	"Pacocha", "Padberg", "Pagac", "Parisian", "Parker", "Paucek", "Pfannerstill", "Pfeffer", "Pollich", "Pouros", "Powlowski", "Predovic", "Price", "Prohaska", "Prosacco", "Purdy",
+	"Quigley", "Quitzon",
+	"Rath", "Ratke", "Rau", "Raynor", "Reichel", "Reichert", "Reilly", "Reinger", "Rempel", "Renner", "Reynolds", "Rice", "Rippin", "Ritchie", "Robel", "Roberts", "Rodriguez", "Rogahn", "Rohan", "Rolfson", "Romaguera", "Roob", "Rosenbaum", "Rowe", "Ruecker", "Runolfsdottir", "Runolfsson", "Runte", "Russel", "Rutherford", "Ryan", "Sanford", "Satterfield", "Sauer", "Sawayn",
+	"Schaden", "Schaefer", "Schamberger", "Schiller", "Schimmel", "Schinner", "Schmeler", "Schmidt", "Schmitt", "Schneider", "Schoen", "Schowalter", "Schroeder", "Schulist", "Schultz", "Schumm", "Schuppe", "Schuster", "Senger", "Shanahan", "Shields", "Simonis", "Sipes", "Skiles", "Smith", "Smitham", "Spencer", "Spinka", "Sporer", "Stamm", "Stanton", "Stark", "Stehr", "Steuber", "Stiedemann", "Stokes", "Stoltenberg", "Stracke", "Streich", "Stroman", "Strosin", "Swaniawski", "Swift",
+	"Terry", "Thiel", "Thompson", "Tillman", "Torp", "Torphy", "Towne", "Toy", "Trantow", "Tremblay", "Treutel", "Tromp", "Turcotte", "Turner",
+	"Ullrich", "Upton", "Vandervort", "Veum", "Volkman", "Von", "VonRueden", "Waelchi", "Walker", "Walsh", "Walter", "Ward", "Waters", "Watsica", "Weber", "Wehner", "Weimann", "Weissnat", "Welch", "West", "White", "Wiegand", "Wilderman", "Wilkinson", "Will", "Williamson", "Willms", "Windler", "Wintheiser", "Wisoky", "Wisozk", "Witting", "Wiza", "Wolf", "Wolff", "Wuckert", "Wunsch", "Wyman",
+	"Yost", "Yundt", "Zboncak", "Zemlak", "Ziemann", "Zieme", "Zulauf",
+}
+var randNameFlag = rand.Intn(100)
+
+func getPerson() Dowser {
+	mu.Lock()
+	defer mu.Unlock()
+
+	if person == nil {
+		person = &Person{}
+	}
+	return person
+}
+
+// this set custom Address
+func SetDowser(d Dowser) {
+	person = d
+}
+
+type Person struct {
+}
+
+func (p Person) TitleMale() string {
+	return randomElementFromSliceString(titlesMale)
+}
+
+func (p Person) TitleFeMale() string {
+	return randomElementFromSliceString(titlesFemale)
+}
+
+func (p Person) FirstNameMale() string {
+	return randomElementFromSliceString(firstNamesMale)
+}
+
+func (p Person) FirstNameFemale() string {
+	return randomElementFromSliceString(firstNamesFemale)
+}
+
+func (p Person) LastName() string {
+	return randomElementFromSliceString(lastNames)
+}
+
+func (p Person) Name() string {
+	if randNameFlag > 50 {
+		return fmt.Sprintf("%s %s %s", randomElementFromSliceString(titlesFemale), randomElementFromSliceString(firstNamesFemale), randomElementFromSliceString(lastNames))
+	} else {
+		return fmt.Sprintf("%s %s %s", randomElementFromSliceString(titlesMale), randomElementFromSliceString(firstNamesMale), randomElementFromSliceString(lastNames))
+	}
+}


Test patch:
diff --git a/datetime_test.go b/datetime_test.go
new file mode 100644
index 0000000..e818806
--- /dev/null
+++ b/datetime_test.go
@@ -0,0 +1,122 @@
+package faker
+
+import (
+	"fmt"
+	"github.com/bxcodec/faker/support/slice"
+	"log"
+	"reflect"
+	"testing"
+	"time"
+)
+
+func TestSetDateTimer(t *testing.T) {
+	SetDateTimer(DateTime{})
+}
+
+func TestUnixTimeValueValid(t *testing.T) {
+	d := getDateTimer()
+	var ref = struct {
+		some int64
+	}{
+		some: 1212,
+	}
+	d.UnixTime(reflect.ValueOf(&ref.some).Elem())
+
+	if time.Now().Unix() <= ref.some {
+		t.Error("UnixTime should return time <= now")
+	}
+}
+func TestUnixTimeValueNotValid(t *testing.T) {
+	d := getDateTimer()
+	var ref = struct {
+		some int
+	}{
+		some: 1212,
+	}
+	d.UnixTime(reflect.ValueOf(&ref.some).Elem())
+	log.Println(ref.some)
+	if ref.some != 0 {
+		t.Errorf("UnixTime should return 0, get : %v", ref.some)
+	}
+}
+
+func TestDate(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(BaseDate, d.Date())
+
+	if err != nil {
+		t.Error("function Date need return valid value")
+	}
+}
+
+func TestTime(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(Time, d.Time())
+
+	if err != nil {
+		t.Error("function Time need return valid value")
+	}
+}
+
+func TestMonthName(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(Month, d.MonthName())
+	if err != nil {
+		t.Error("function Month need return valid month")
+	}
+}
+
+func TestYear(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(Year, d.Year())
+	if err != nil {
+		t.Error("function Year need return valid year")
+	}
+}
+
+func TestDayOfWeek(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(Day, d.DayOfWeek())
+	if err != nil {
+		t.Error("function DayOfWeek need return valid day")
+	}
+}
+
+func TestDayOfMonth(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(DayOfMonth, d.DayOfMonth())
+	if err != nil {
+		t.Error("function DayOfMonth need return valid digit")
+	}
+}
+
+func TestTimestamp(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(fmt.Sprintf("%s %s", BaseDate, Time), d.Timestamp())
+	if err != nil {
+		t.Error("function Timestamp need return valid timestamp format")
+	}
+}
+
+func TestCentury(t *testing.T) {
+	d := getDateTimer()
+
+	if !slice.Contains(century, d.Century()) {
+		t.Error("Expected century from functuon Century")
+	}
+}
+
+func TestTimeZone(t *testing.T) {
+	d := getDateTimer()
+	if !slice.Contains(timezones, d.TimeZone()) {
+		t.Error("Expected timezone from variable timezones")
+	}
+}
+
+func TestTimePeriod(t *testing.T) {
+	d := getDateTimer()
+	_, err := time.Parse(TimePeriod, d.TimePeriod())
+	if err != nil {
+		t.Error("function TimePeriod need return valid period")
+	}
+}
diff --git a/faker_test.go b/faker_test.go
index b0c2c31..b818db0 100644
--- a/faker_test.go
+++ b/faker_test.go
@@ -62,12 +62,33 @@ type TaggedStruct struct {
 	Email            string  `faker:"email"`
 	IPV4             string  `faker:"ipv4"`
 	IPV6             string  `faker:"ipv6"`
+	Password         string  `faker:"password"`
 	PhoneNumber      string  `faker:"phone_number"`
 	MacAddress       string  `faker:"mac_address"`
 	Url              string  `faker:"url"`
 	UserName         string  `faker:"username"`
 	ToolFreeNumber   string  `faker:"tool_free_number"`
 	E164PhoneNumber  string  `faker:"e_164_phone_number"`
+	TitleMale        string  `faker:"title_male"`
+	TitleFemale      string  `faker:"title_female"`
+	FirstNameMale    string  `faker:"first_name_male"`
+	FirstNameFemale  string  `faker:"first_name_female"`
+	LastName         string  `faker:"last_name"`
+	Name             string  `faker:"name"`
+	UnixTime         int64   `faker:"unix_time"`
+	Date             string  `faker:"date"`
+	Time             string  `faker:"time"`
+	MonthName        string  `faker:"month_name"`
+	Year             string  `faker:"year"`
+	DayOfWeek        string  `faker:"day_of_week"`
+	DayOfMonth       string  `faker:"day_of_month"`
+	Timestamp        string  `faker:"timestamp"`
+	Century          string  `faker:"century"`
+	TimeZone         string  `faker:"timezone"`
+	TimePeriod       string  `faker:"time_period"`
+	Word             string  `faker:"word"`
+	Sentence         string  `faker:"sentence"`
+	Sentences        string  `faker:"sentences"`
 }
 
 func (t TaggedStruct) String() string {
@@ -79,13 +100,44 @@ func (t TaggedStruct) String() string {
 	Email: %s,
 	IPV4: %s,
 	IPV6: %s,
+	Password: %s,
 	PhoneNumber: %s,
 	MacAddress: %s,
 	Url: %s,
 	UserName: %s,
 	ToolFreeNumber: %s,
 	E164PhoneNumber: %s,
-}`, t.Latitude, t.Long, t.CreditCardNumber, t.CreditCardType, t.Email, t.IPV4, t.IPV6, t.PhoneNumber, t.MacAddress, t.Url, t.UserName, t.ToolFreeNumber, t.E164PhoneNumber)
+	TitleMale: %s,
+	TitleFemale: %s,
+	FirstNameMale: %s,
+	FirstNameFemale: %s,
+	LastName: %s,
+	Name: %s,
+	UnixTime: %d,
+	Date: %s,
+	Time: %s,
+	MonthName: %s,
+	Year: %s,
+	DayOfWeek: %s,
+	DayOfMonth: %s,
+	Timestamp: %s,
+	Century: %s,
+	TimeZone: %s,
+	TimePeriod: %s,
+	Word: %s,
+	Sentence: %s,
+	Sentences: %s,
+}`, t.Latitude, t.Long, t.CreditCardNumber,
+		t.CreditCardType, t.Email, t.IPV4,
+		t.IPV6, t.Password, t.PhoneNumber, t.MacAddress,
+		t.Url, t.UserName, t.ToolFreeNumber,
+		t.E164PhoneNumber, t.TitleMale, t.TitleFemale,
+		t.FirstNameMale, t.FirstNameFemale, t.LastName,
+		t.Name, t.UnixTime, t.Date,
+		t.Time, t.MonthName, t.Year, t.DayOfWeek,
+		t.DayOfMonth, t.Timestamp, t.Century, t.TimeZone,
+		t.TimePeriod, t.Word, t.Sentence, t.Sentences,
+	)
 }
 
 type NotTaggedStruct struct {
@@ -147,11 +199,20 @@ func TestSetDataIfArgumentNotHaveReflect(t *testing.T) {
 	}
 }
 
-func TestSetDataErrorDataParseTag(t *testing.T) {
+func TestSetDataErrorDataParseTagStringType(t *testing.T) {
 	temp := &struct {
 		test string `faker:"test"`
 	}{}
-	if "String Tag unsupported" != setData(reflect.ValueOf(temp)).Error() {
+	if ErrTagNotSupported != setData(reflect.ValueOf(temp)).Error() {
+		t.Error("Exptected error Unsupported tag")
+	}
+}
+
+func TestSetDataErrorDataParseTagIntType(t *testing.T) {
+	temp := &struct {
+		test int `faker:"test"`
+	}{}
+	if ErrTagNotSupported != setData(reflect.ValueOf(temp)).Error() {
 		t.Error("Exptected error Unsupported tag")
 	}
 }
diff --git a/internet_test.go b/internet_test.go
index a2a54d3..1bed114 100644
--- a/internet_test.go
+++ b/internet_test.go
@@ -1,10 +1,9 @@
 package faker
 
 import (
+	"github.com/bxcodec/faker/support/slice"
 	"strings"
 	"testing"
-
-	"github.com/bxcodec/faker/support/slice"
 )
 
 func TestEmail(t *testing.T) {
@@ -61,3 +60,9 @@ func TestIpv6(t *testing.T) {
 func TestSetNetwork(t *testing.T) {
 	SetNetwork(Internet{})
 }
+
+func TestPassword(t *testing.T) {
+	if getNetworker().Password() == "" {
+		t.Error("Expected hash password")
+	}
+}
diff --git a/lorem_test.go b/lorem_test.go
new file mode 100644
index 0000000..4d2bc53
--- /dev/null
+++ b/lorem_test.go
@@ -0,0 +1,31 @@
+package faker
+
+import (
+	"github.com/bxcodec/faker/support/slice"
+	"strings"
+	"testing"
+)
+
+func TestDataFaker(t *testing.T) {
+	SetDataFaker(Lorem{})
+}
+
+func TestWord(t *testing.T) {
+	if !slice.Contains(wordList, getLorem().Word()) {
+		t.Error("Expected word from slice wordList")
+	}
+}
+
+func TestSentence(t *testing.T) {
+	s := getLorem().Sentence()
+	if s == "" || !strings.HasSuffix(s, ".") {
+		t.Error("Expected sentence")
+	}
+}
+
+func TestSentences(t *testing.T) {
+	s := getLorem().Sentences()
+	if s == "" || !strings.HasSuffix(s, ".") {
+		t.Error("Expected sentences")
+	}
+}
diff --git a/person_test.go b/person_test.go
new file mode 100644
index 0000000..69be307
--- /dev/null
+++ b/person_test.go
@@ -0,0 +1,60 @@
+package faker
+
+import (
+	"github.com/bxcodec/faker/support/slice"
+	"testing"
+)
+
+func TestSetDowser(t *testing.T) {
+	SetDowser(Person{})
+}
+
+func TestTitleMale(t *testing.T) {
+	p := getPerson()
+	if !slice.Contains(titlesMale, p.TitleMale()) {
+		t.Error("Expected value from variable titleMales in function TitleMale")
+	}
+}
+
+func TestTitleFemale(t *testing.T) {
+	p := getPerson()
+	if !slice.Contains(titlesFemale, p.TitleFeMale()) {
+		t.Error("Expected value from variable titleFemales in function TitleFeMale")
+	}
+}
+
+func TestFirstNameMale(t *testing.T) {
+	p := getPerson()
+	if !slice.Contains(firstNamesMale, p.FirstNameMale()) {
+		t.Error("Expected value from variable firstNamesMale in function FirstNameMale")
+	}
+}
+
+func TestFirstNameFemale(t *testing.T) {
+	p := getPerson()
+	if !slice.Contains(firstNamesFemale, p.FirstNameFemale()) {
+		t.Error("Expected value from variable firstNamesFemale in function FirstNameFemale")
+	}
+}
+
+func TestLastName(t *testing.T) {
+	p := getPerson()
+	if !slice.Contains(lastNames, p.LastName()) {
+		t.Error("Expected value from variable lastNames in function LastName")
+	}
+}
+
+func TestNameMale(t *testing.T) {
+	p := getPerson()
+	randNameFlag = 51
+	if p.Name() == "" {
+		t.Error("Expected from function name string get empty string")
+	}
+}
+func TestNameFemale(t *testing.T) {
+	p := getPerson()
+	randNameFlag = 20
+	if p.Name() == "" {
+		t.Error("Expected from function name string get empty string")
+	}
+}