diff --git a/inc/database.php b/inc/database.php
index b946115..0f13124 100755
--- a/inc/database.php
+++ b/inc/database.php
@@ -9,20 +9,51 @@ class DataBase extends SQLite3 {
 		
 		$sql = "
 			CREATE TABLE IF NOT EXISTS users (
-			ID	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE,
-			HANDLE	TEXT	NOT NULL	UNIQUE,
-			NAME	TEXT	NOT NULL,
-			ABOUT	TEXT	NOT NULL
+			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE,
+			uuid	TEXT	UNIQUE,
+			pass	TEXT,
+			email	TEXT	UNIQUE,
+			handle	TEXT	NOT NULL	UNIQUE,
+			name	TEXT	NOT NULL,
+			about	TEXT
+			);
+
+			CREATE TABLE IF NOT EXISTS personas (
+			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE,
+			uuid	TEXT	UNIQUE,
+			userid	INTEGER	NOT NULL,
+			handle	TEXT	NOT NULL,
+			name	TEXT	NOT NULL,
+			about	TEXT,
+			colour	INTEGER,
+			FOREIGN KEY (userid) REFERENCES users(id),
+			UNIQUE (userid, handle)
 			);
 
 			CREATE TABLE IF NOT EXISTS posts (
-			ID	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE,
-			TIME	INTEGER	NOT NULL,
-			USERID	INTEGER	NOT NULL,
-			TEXT	TEXT	NOT NULL
+			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE,
+			uuid	TEXT	UNIQUE,
+			time	INTEGER	NOT NULL,
+			userid	INTEGER	NOT NULL,
+			personaid INTEGER,
+			text	TEXT	NOT NULL,
+			FOREIGN KEY (userid) REFERENCES users(id)
 			);
 
-			INSERT OR IGNORE INTO users (ID, HANDLE, NAME, ABOUT) VALUES ('0', 'SYSTEM', 'SYSTEM', '');
+			CREATE TABLE IF NOT EXISTS comments (
+			id	INTEGER	PRIMARY KEY	AUTOINCREMENT	UNIQUE,
+			uuid	TEXT	UNIQUE,
+			time	INTEGER	NOT NULL,
+			userid	INTEGER	NOT NULL,
+			personaid INTEGER,
+			postid	INTEGER	NOT NULL,
+			text	TEXT	NOT NULL,
+			FOREIGN KEY (postid) REFERENCES posts(id),
+			FOREIGN KEY (userid) REFERENCES users(id),
+			FOREIGN KEY (personaid) REFERENCES personas(id)
+			);
+
+			INSERT OR IGNORE INTO users (id, handle, name, about, uuid) VALUES ('0', 'SYSTEM', 'SYSTEM', 'SYSTEM', 'SYSTEM');
 
 		";
 		
@@ -30,23 +61,47 @@ class DataBase extends SQLite3 {
 		
 	}
 	
-	function addUser($handle, $name, $about="") {
-		$sql = "INSERT INTO users (HANDLE, NAME, ABOUT) VALUES ('$handle', '$name', '$about')";
+	function addUser($handle, $name, $about=NULL) {
+		$uuid = $this->uuidGen();
+		$sql = "INSERT INTO users (handle, name, about, uuid) VALUES ('$handle', '$name', '$about', '$uuid')";
 		$ret = $this->exec($sql);
 		if(!$ret) {
 			die($this->lastErrorMsg());
 		}
 	}
 
-	function addPost($contents) {
-		$userid = 0;
+	function addPost($userid, $personaid, $contents) {
 		$time = time();
 
-		$sql = "INSERT INTO posts (TIME, USERID, TEXT) values ('$time', '$userid', '$contents')";
+		$uuid = $this->uuidGen();
+		$sql = "INSERT INTO posts (time, userid, personaid, text, uuid) values ('$time', '$userid', '$personaid', '$contents', '$uuid')";
 		$ret = $this->exec($sql);
 		if(!$ret) {
 			die($this->lastErrorMsg());
 		}
 	}
+
+	function passwordSet($userid, $password=NULL) {
+		$hash = empty($password) ? NULL : password_hash($password, PASSWORD_DEFAULT);
+		$sql = "UPDATE USERS SET pass='$hash' WHERE id='$userid';";
+		$ret = $this->exec($sql);
+		if(!$ret) {
+			die($this->lastErrorMsg());
+		}
+	}
+
+	function passwordVerify($userid, $password) {
+		$sql = "SELECT pass FROM users WHERE id='$userid';";
+		$ret = $this->query($sql)->fetchArray();
+		if(!$ret) {
+			return false;
+		}
+		$dbhash = $ret[0];
+		return password_verify($password, $dbhash);
+	}
+
+	function uuidGen() {
+		return base64_encode(random_bytes(12));
+	}
 }
 ?>