 				var verbage = ""
 				if !key.hasPrefix("internal_") {
 					verbage = "\(key) "
-					if child.value is Int {
+					if child.value is Int && opt.count == 0 {
+						verbage += "serial"
+					} else if child.value is Int {
 						verbage += "int8"
 					} else if child.value is Bool {
 						verbage += "bool"

					}
					if opt.count == 0 {
						verbage += " NOT NULL"
					}
					opt.append(verbage)
				}
			}
			createStatement = "CREATE TABLE IF NOT EXISTS \(table()) (\(opt.joined(separator: ", ")))"
		}
		do {
			try sql(createStatement, params: [])

		var createStatement = str
		if str.characters.count == 0 {
			var opt = [String]()
			var keyName = ""
			for child in Mirror(reflecting: self).children {
				guard let key = child.label else {
					continue
