diff --git a/go/src/hearts/assets/Deal.png b/go/src/hearts/assets/Deal.png
deleted file mode 100644
index c22ea22..0000000
--- a/go/src/hearts/assets/Deal.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/acrossArrow.png b/go/src/hearts/assets/acrossArrow.png
deleted file mode 100644
index 4aaa946..0000000
--- a/go/src/hearts/assets/acrossArrow.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/bluePressed.png b/go/src/hearts/assets/bluePressed.png
deleted file mode 100644
index 1ddd80b..0000000
--- a/go/src/hearts/assets/bluePressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/croupierName.png b/go/src/hearts/assets/croupierName.png
deleted file mode 100644
index 8a5a1b6..0000000
--- a/go/src/hearts/assets/croupierName.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/leftArrow.png b/go/src/hearts/assets/leftArrow.png
deleted file mode 100644
index 3361ac6..0000000
--- a/go/src/hearts/assets/leftArrow.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/passPressed.png b/go/src/hearts/assets/passPressed.png
deleted file mode 100644
index cd8c0aa..0000000
--- a/go/src/hearts/assets/passPressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/passUnpressed.png b/go/src/hearts/assets/passUnpressed.png
deleted file mode 100644
index 1c5db41..0000000
--- a/go/src/hearts/assets/passUnpressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/playPressed.png b/go/src/hearts/assets/playPressed.png
deleted file mode 100644
index 975a00a..0000000
--- a/go/src/hearts/assets/playPressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/playUnpressed.png b/go/src/hearts/assets/playUnpressed.png
deleted file mode 100644
index 777848a..0000000
--- a/go/src/hearts/assets/playUnpressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/rightArrow.png b/go/src/hearts/assets/rightArrow.png
deleted file mode 100644
index 048b571..0000000
--- a/go/src/hearts/assets/rightArrow.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/takePressed.png b/go/src/hearts/assets/takePressed.png
deleted file mode 100644
index fdae348..0000000
--- a/go/src/hearts/assets/takePressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/takeUnpressed.png b/go/src/hearts/assets/takeUnpressed.png
deleted file mode 100644
index f8b6a7a..0000000
--- a/go/src/hearts/assets/takeUnpressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/white.png b/go/src/hearts/assets/white.png
deleted file mode 100644
index e878403..0000000
--- a/go/src/hearts/assets/white.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/img/texture/texture.go b/go/src/hearts/img/texture/texture.go
index 08e752b..a112d6c 100644
--- a/go/src/hearts/img/texture/texture.go
+++ b/go/src/hearts/img/texture/texture.go
@@ -181,7 +181,10 @@
 		totalWidth = maxWidth
 	}
 	startX := center.X - totalWidth/2
-	startY := center.Y + (float32(textures[0].R.Max.Y)/scaler-float32(textures[0].R.Max.Y)/newScaler)/2
+	startY := center.Y
+	if len(textures) > 0 {
+		startY = center.Y + (float32(textures[0].R.Max.Y)/scaler-float32(textures[0].R.Max.Y)/newScaler)/2
+	}
 	start := coords.MakeVec(startX, startY)
 	return MakeStringImgLeftAlign(input, color, altColor, displayColor, start, newScaler, maxWidth, u)
 }
@@ -228,47 +231,46 @@
 		"Hearts-2.png", "Hearts-3.png", "Hearts-4.png", "Hearts-5.png", "Hearts-6.png", "Hearts-7.png", "Hearts-8.png",
 		"Hearts-9.png", "Hearts-10.png", "Hearts-Jack.png", "Hearts-Queen.png", "Hearts-King.png", "Hearts-Ace.png", "BakuSquare.png",
 	}
-	unboundedImgs := []string{"Club.png", "Diamond.png", "Spade.png", "Heart.png", "gray.jpeg", "blue.png", "white.png", "passPressed.png",
-		"passUnpressed.png", "leftArrow.png", "rightArrow.png", "acrossArrow.png", "croupierName.png", "trickDrop.png", "trickDropBlue.png",
-		"player0.jpeg", "player1.jpeg", "player2.jpeg", "player3.jpeg", "laptopIcon.png", "watchIcon.png", "phoneIcon.png", "tabletIcon.png",
-		"playPressed.png", "playUnpressed.png", "bluePressed.png", "takePressed.png", "takeUnpressed.png", "A-Upper.png", "B-Upper.png",
-		"C-Upper.png", "D-Upper.png", "E-Upper.png", "F-Upper.png", "G-Upper.png", "H-Upper.png", "I-Upper.png", "J-Upper.png",
-		"K-Upper.png", "L-Upper.png", "M-Upper.png", "N-Upper.png", "O-Upper.png", "P-Upper.png", "Q-Upper.png", "R-Upper.png",
-		"S-Upper.png", "T-Upper.png", "U-Upper.png", "V-Upper.png", "W-Upper.png", "X-Upper.png", "Y-Upper.png", "Z-Upper.png",
-		"A-Lower.png", "B-Lower.png", "C-Lower.png", "D-Lower.png", "E-Lower.png", "F-Lower.png", "G-Lower.png", "H-Lower.png",
-		"I-Lower.png", "J-Lower.png", "K-Lower.png", "L-Lower.png", "M-Lower.png", "N-Lower.png", "O-Lower.png", "P-Lower.png",
-		"Q-Lower.png", "R-Lower.png", "S-Lower.png", "T-Lower.png", "U-Lower.png", "V-Lower.png", "W-Lower.png", "X-Lower.png",
-		"Y-Lower.png", "Z-Lower.png", "Space.png", "Colon.png", "Bang.png", "1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png",
-		"8.png", "9.png", "0.png", "1-Red.png", "2-Red.png", "3-Red.png", "4-Red.png", "5-Red.png", "6-Red.png", "7-Red.png", "8-Red.png",
-		"9-Red.png", "0-Red.png", "A-Upper-DBlue.png", "B-Upper-DBlue.png", "C-Upper-DBlue.png", "D-Upper-DBlue.png", "E-Upper-DBlue.png",
-		"F-Upper-DBlue.png", "G-Upper-DBlue.png", "H-Upper-DBlue.png", "I-Upper-DBlue.png", "J-Upper-DBlue.png", "K-Upper-DBlue.png",
-		"L-Upper-DBlue.png", "M-Upper-DBlue.png", "N-Upper-DBlue.png", "O-Upper-DBlue.png", "P-Upper-DBlue.png", "Q-Upper-DBlue.png",
-		"R-Upper-DBlue.png", "S-Upper-DBlue.png", "T-Upper-DBlue.png", "U-Upper-DBlue.png", "V-Upper-DBlue.png", "W-Upper-DBlue.png",
-		"X-Upper-DBlue.png", "Y-Upper-DBlue.png", "Z-Upper-DBlue.png", "A-Lower-DBlue.png", "B-Lower-DBlue.png", "C-Lower-DBlue.png",
-		"D-Lower-DBlue.png", "E-Lower-DBlue.png", "F-Lower-DBlue.png", "G-Lower-DBlue.png", "H-Lower-DBlue.png", "I-Lower-DBlue.png",
-		"J-Lower-DBlue.png", "K-Lower-DBlue.png", "L-Lower-DBlue.png", "M-Lower-DBlue.png", "N-Lower-DBlue.png", "O-Lower-DBlue.png",
-		"P-Lower-DBlue.png", "Q-Lower-DBlue.png", "R-Lower-DBlue.png", "S-Lower-DBlue.png", "T-Lower-DBlue.png", "U-Lower-DBlue.png",
-		"V-Lower-DBlue.png", "W-Lower-DBlue.png", "X-Lower-DBlue.png", "Y-Lower-DBlue.png", "Z-Lower-DBlue.png", "Apostrophe-DBlue.png",
-		"Space-DBlue.png", "A-Upper-LBlue.png", "B-Upper-LBlue.png", "C-Upper-LBlue.png", "D-Upper-LBlue.png", "E-Upper-LBlue.png",
-		"F-Upper-LBlue.png", "G-Upper-LBlue.png", "H-Upper-LBlue.png", "I-Upper-LBlue.png", "J-Upper-LBlue.png", "K-Upper-LBlue.png",
-		"L-Upper-LBlue.png", "M-Upper-LBlue.png", "N-Upper-LBlue.png", "O-Upper-LBlue.png", "P-Upper-LBlue.png", "Q-Upper-LBlue.png",
-		"R-Upper-LBlue.png", "S-Upper-LBlue.png", "T-Upper-LBlue.png", "U-Upper-LBlue.png", "V-Upper-LBlue.png", "W-Upper-LBlue.png",
-		"X-Upper-LBlue.png", "Y-Upper-LBlue.png", "Z-Upper-LBlue.png", "A-Lower-LBlue.png", "B-Lower-LBlue.png", "C-Lower-LBlue.png",
-		"D-Lower-LBlue.png", "E-Lower-LBlue.png", "F-Lower-LBlue.png", "G-Lower-LBlue.png", "H-Lower-LBlue.png", "I-Lower-LBlue.png",
-		"J-Lower-LBlue.png", "K-Lower-LBlue.png", "L-Lower-LBlue.png", "M-Lower-LBlue.png", "N-Lower-LBlue.png", "O-Lower-LBlue.png",
-		"P-Lower-LBlue.png", "Q-Lower-LBlue.png", "R-Lower-LBlue.png", "S-Lower-LBlue.png", "T-Lower-LBlue.png", "U-Lower-LBlue.png",
-		"V-Lower-LBlue.png", "W-Lower-LBlue.png", "X-Lower-LBlue.png", "Y-Lower-LBlue.png", "Z-Lower-LBlue.png", "A-Upper-Gray.png",
-		"B-Upper-Gray.png", "C-Upper-Gray.png", "D-Upper-Gray.png", "E-Upper-Gray.png", "F-Upper-Gray.png", "G-Upper-Gray.png",
-		"H-Upper-Gray.png", "I-Upper-Gray.png", "J-Upper-Gray.png", "K-Upper-Gray.png", "L-Upper-Gray.png", "M-Upper-Gray.png",
-		"N-Upper-Gray.png", "O-Upper-Gray.png", "P-Upper-Gray.png", "Q-Upper-Gray.png", "R-Upper-Gray.png", "S-Upper-Gray.png",
-		"T-Upper-Gray.png", "U-Upper-Gray.png", "V-Upper-Gray.png", "W-Upper-Gray.png", "X-Upper-Gray.png", "Y-Upper-Gray.png",
-		"Z-Upper-Gray.png", "A-Lower-Gray.png", "B-Lower-Gray.png", "C-Lower-Gray.png", "D-Lower-Gray.png", "E-Lower-Gray.png",
-		"F-Lower-Gray.png", "G-Lower-Gray.png", "H-Lower-Gray.png", "I-Lower-Gray.png", "J-Lower-Gray.png", "K-Lower-Gray.png",
-		"L-Lower-Gray.png", "M-Lower-Gray.png", "N-Lower-Gray.png", "O-Lower-Gray.png", "P-Lower-Gray.png", "Q-Lower-Gray.png",
-		"R-Lower-Gray.png", "S-Lower-Gray.png", "T-Lower-Gray.png", "U-Lower-Gray.png", "V-Lower-Gray.png", "W-Lower-Gray.png",
-		"X-Lower-Gray.png", "Y-Lower-Gray.png", "Z-Lower-Gray.png", "Space-Gray.png", "RoundedRectangle-DBlue.png",
-		"RoundedRectangle-LBlue.png", "RoundedRectangle-Gray.png", "Rectangle-LBlue.png", "Rectangle-DBlue.png", "HorizontalPullTab.png",
-		"VerticalPullTab.png", "NewGame.png", "NewRound.png", "JoinGame.png", "Deal.png", "Period.png", "SitSpot.png", "WatchSpot.png",
+	unboundedImgs := []string{"Club.png", "Diamond.png", "Spade.png", "Heart.png", "gray.jpeg", "blue.png", "trickDrop.png",
+		"trickDropBlue.png", "player0.jpeg", "player1.jpeg", "player2.jpeg", "player3.jpeg", "laptopIcon.png", "watchIcon.png",
+		"phoneIcon.png", "tabletIcon.png", "A-Upper.png", "B-Upper.png", "C-Upper.png", "D-Upper.png", "E-Upper.png", "F-Upper.png",
+		"G-Upper.png", "H-Upper.png", "I-Upper.png", "J-Upper.png", "K-Upper.png", "L-Upper.png", "M-Upper.png", "N-Upper.png",
+		"O-Upper.png", "P-Upper.png", "Q-Upper.png", "R-Upper.png", "S-Upper.png", "T-Upper.png", "U-Upper.png", "V-Upper.png",
+		"W-Upper.png", "X-Upper.png", "Y-Upper.png", "Z-Upper.png", "A-Lower.png", "B-Lower.png", "C-Lower.png", "D-Lower.png",
+		"E-Lower.png", "F-Lower.png", "G-Lower.png", "H-Lower.png", "I-Lower.png", "J-Lower.png", "K-Lower.png", "L-Lower.png",
+		"M-Lower.png", "N-Lower.png", "O-Lower.png", "P-Lower.png", "Q-Lower.png", "R-Lower.png", "S-Lower.png", "T-Lower.png",
+		"U-Lower.png", "V-Lower.png", "W-Lower.png", "X-Lower.png", "Y-Lower.png", "Z-Lower.png", "Space.png", "Colon.png", "Bang.png",
+		"1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png", "8.png", "9.png", "0.png", "1-Red.png", "2-Red.png", "3-Red.png",
+		"4-Red.png", "5-Red.png", "6-Red.png", "7-Red.png", "8-Red.png", "9-Red.png", "0-Red.png", "A-Upper-DBlue.png", "B-Upper-DBlue.png",
+		"C-Upper-DBlue.png", "D-Upper-DBlue.png", "E-Upper-DBlue.png", "F-Upper-DBlue.png", "G-Upper-DBlue.png", "H-Upper-DBlue.png",
+		"I-Upper-DBlue.png", "J-Upper-DBlue.png", "K-Upper-DBlue.png", "L-Upper-DBlue.png", "M-Upper-DBlue.png", "N-Upper-DBlue.png",
+		"O-Upper-DBlue.png", "P-Upper-DBlue.png", "Q-Upper-DBlue.png", "R-Upper-DBlue.png", "S-Upper-DBlue.png", "T-Upper-DBlue.png",
+		"U-Upper-DBlue.png", "V-Upper-DBlue.png", "W-Upper-DBlue.png", "X-Upper-DBlue.png", "Y-Upper-DBlue.png", "Z-Upper-DBlue.png",
+		"A-Lower-DBlue.png", "B-Lower-DBlue.png", "C-Lower-DBlue.png", "D-Lower-DBlue.png", "E-Lower-DBlue.png", "F-Lower-DBlue.png",
+		"G-Lower-DBlue.png", "H-Lower-DBlue.png", "I-Lower-DBlue.png", "J-Lower-DBlue.png", "K-Lower-DBlue.png", "L-Lower-DBlue.png",
+		"M-Lower-DBlue.png", "N-Lower-DBlue.png", "O-Lower-DBlue.png", "P-Lower-DBlue.png", "Q-Lower-DBlue.png", "R-Lower-DBlue.png",
+		"S-Lower-DBlue.png", "T-Lower-DBlue.png", "U-Lower-DBlue.png", "V-Lower-DBlue.png", "W-Lower-DBlue.png", "X-Lower-DBlue.png",
+		"Y-Lower-DBlue.png", "Z-Lower-DBlue.png", "Apostrophe-DBlue.png", "Space-DBlue.png", "A-Upper-LBlue.png", "B-Upper-LBlue.png",
+		"C-Upper-LBlue.png", "D-Upper-LBlue.png", "E-Upper-LBlue.png", "F-Upper-LBlue.png", "G-Upper-LBlue.png", "H-Upper-LBlue.png",
+		"I-Upper-LBlue.png", "J-Upper-LBlue.png", "K-Upper-LBlue.png", "L-Upper-LBlue.png", "M-Upper-LBlue.png", "N-Upper-LBlue.png",
+		"O-Upper-LBlue.png", "P-Upper-LBlue.png", "Q-Upper-LBlue.png", "R-Upper-LBlue.png", "S-Upper-LBlue.png", "T-Upper-LBlue.png",
+		"U-Upper-LBlue.png", "V-Upper-LBlue.png", "W-Upper-LBlue.png", "X-Upper-LBlue.png", "Y-Upper-LBlue.png", "Z-Upper-LBlue.png",
+		"A-Lower-LBlue.png", "B-Lower-LBlue.png", "C-Lower-LBlue.png", "D-Lower-LBlue.png", "E-Lower-LBlue.png", "F-Lower-LBlue.png",
+		"G-Lower-LBlue.png", "H-Lower-LBlue.png", "I-Lower-LBlue.png", "J-Lower-LBlue.png", "K-Lower-LBlue.png", "L-Lower-LBlue.png",
+		"M-Lower-LBlue.png", "N-Lower-LBlue.png", "O-Lower-LBlue.png", "P-Lower-LBlue.png", "Q-Lower-LBlue.png", "R-Lower-LBlue.png",
+		"S-Lower-LBlue.png", "T-Lower-LBlue.png", "U-Lower-LBlue.png", "V-Lower-LBlue.png", "W-Lower-LBlue.png", "X-Lower-LBlue.png",
+		"Y-Lower-LBlue.png", "Z-Lower-LBlue.png", "A-Upper-Gray.png", "B-Upper-Gray.png", "C-Upper-Gray.png", "D-Upper-Gray.png",
+		"E-Upper-Gray.png", "F-Upper-Gray.png", "G-Upper-Gray.png", "H-Upper-Gray.png", "I-Upper-Gray.png", "J-Upper-Gray.png",
+		"K-Upper-Gray.png", "L-Upper-Gray.png", "M-Upper-Gray.png", "N-Upper-Gray.png", "O-Upper-Gray.png", "P-Upper-Gray.png",
+		"Q-Upper-Gray.png", "R-Upper-Gray.png", "S-Upper-Gray.png", "T-Upper-Gray.png", "U-Upper-Gray.png", "V-Upper-Gray.png",
+		"W-Upper-Gray.png", "X-Upper-Gray.png", "Y-Upper-Gray.png", "Z-Upper-Gray.png", "A-Lower-Gray.png", "B-Lower-Gray.png",
+		"C-Lower-Gray.png", "D-Lower-Gray.png", "E-Lower-Gray.png", "F-Lower-Gray.png", "G-Lower-Gray.png", "H-Lower-Gray.png",
+		"I-Lower-Gray.png", "J-Lower-Gray.png", "K-Lower-Gray.png", "L-Lower-Gray.png", "M-Lower-Gray.png", "N-Lower-Gray.png",
+		"O-Lower-Gray.png", "P-Lower-Gray.png", "Q-Lower-Gray.png", "R-Lower-Gray.png", "S-Lower-Gray.png", "T-Lower-Gray.png",
+		"U-Lower-Gray.png", "V-Lower-Gray.png", "W-Lower-Gray.png", "X-Lower-Gray.png", "Y-Lower-Gray.png", "Z-Lower-Gray.png",
+		"Space-Gray.png", "RoundedRectangle-DBlue.png", "RoundedRectangle-LBlue.png", "RoundedRectangle-Gray.png", "Rectangle-LBlue.png",
+		"Rectangle-DBlue.png", "HorizontalPullTab.png", "VerticalPullTab.png", "NewGame.png", "NewRound.png", "JoinGame.png", "Period.png",
+		"SitSpot.png", "WatchSpot.png",
 	}
 	for _, f := range boundedImgs {
 		a, err := asset.Open(f)
diff --git a/go/src/hearts/img/view/view.go b/go/src/hearts/img/view/view.go
index 2242d1f..e41f594 100644
--- a/go/src/hearts/img/view/view.go
+++ b/go/src/hearts/img/view/view.go
@@ -55,7 +55,7 @@
 		u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, arrangeDim, u))
 	} else {
 		u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, nilDim, u))
-		avatar := uistate.GetAvatar(0, u)
+		avatar := uistate.GetAvatar(1, u)
 		u.BackgroundImgs = append(u.BackgroundImgs, texture.MakeImgWithoutAlt(avatar, sitPos, arrangeDim, u))
 	}
 	// player 2 seat
@@ -64,7 +64,7 @@
 		u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, arrangeDim, u))
 	} else {
 		u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, nilDim, u))
-		avatar := uistate.GetAvatar(0, u)
+		avatar := uistate.GetAvatar(2, u)
 		u.BackgroundImgs = append(u.BackgroundImgs, texture.MakeImgWithoutAlt(avatar, sitPos, arrangeDim, u))
 	}
 	// player 3 seat
@@ -73,7 +73,7 @@
 		u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, arrangeDim, u))
 	} else {
 		u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, nilDim, u))
-		avatar := uistate.GetAvatar(0, u)
+		avatar := uistate.GetAvatar(3, u)
 		u.BackgroundImgs = append(u.BackgroundImgs, texture.MakeImgWithoutAlt(avatar, sitPos, arrangeDim, u))
 	}
 	// table
diff --git a/go/src/hearts/syncbase/client/main.go b/go/src/hearts/syncbase/client/main.go
index 46ddf10..8924dbd 100644
--- a/go/src/hearts/syncbase/client/main.go
+++ b/go/src/hearts/syncbase/client/main.go
@@ -85,19 +85,16 @@
 	return db.Watch(u.Ctx, tableName, prefix, resumeMarker)
 }
 
-// Joins a set of gamelog and game settings syncgroups
-// TODO(emshack): After joining a syncgroup, advertise user settings data
-func JoinSyncgroups(ch chan bool, logName, settingsName string, u *uistate.UIState) {
-	fmt.Println("Joining syncgroup")
+// Joins gamelog syncgroup
+func JoinLogSyncgroup(ch chan bool, logName string, u *uistate.UIState) {
+	fmt.Println("Joining gamelog syncgroup")
 	u.IsOwner = false
 	app := u.Service.App(util.AppName)
 	db := app.NoSQLDatabase(util.DbName, nil)
 	logSg := db.Syncgroup(logName)
-	settingsSg := db.Syncgroup(settingsName)
 	myInfoJoiner := wire.SyncgroupMemberInfo{8, false}
 	_, err := logSg.Join(u.Ctx, myInfoJoiner)
-	_, err2 := settingsSg.Join(u.Ctx, myInfoJoiner)
-	if err != nil || err2 != nil {
+	if err != nil {
 		fmt.Println("SYNCGROUP JOIN ERROR: ", err)
 		ch <- false
 	} else {
@@ -110,6 +107,23 @@
 	}
 }
 
+// Joins player settings syncgroup
+func JoinSettingsSyncgroup(ch chan bool, settingsName string, u *uistate.UIState) {
+	fmt.Println("Joining user settings syncgroup")
+	app := u.Service.App(util.AppName)
+	db := app.NoSQLDatabase(util.DbName, nil)
+	settingsSg := db.Syncgroup(settingsName)
+	myInfoJoiner := wire.SyncgroupMemberInfo{8, false}
+	_, err := settingsSg.Join(u.Ctx, myInfoJoiner)
+	if err != nil {
+		fmt.Println("SYNCGROUP JOIN ERROR: ", err)
+		ch <- false
+	} else {
+		fmt.Println("Syncgroup joined")
+		ch <- true
+	}
+}
+
 func NumInSG(logName string, u *uistate.UIState) int {
 	app := u.Service.App(util.AppName)
 	db := app.NoSQLDatabase(util.DbName, nil)
diff --git a/go/src/hearts/syncbase/gamelog/logWriter.go b/go/src/hearts/syncbase/gamelog/logWriter.go
index 2cbeeb7..e1fae35 100644
--- a/go/src/hearts/syncbase/gamelog/logWriter.go
+++ b/go/src/hearts/syncbase/gamelog/logWriter.go
@@ -94,6 +94,11 @@
 	return logKeyValue(u.Service, u.Ctx, key, value)
 }
 
+func LogSettingsName(name string, u *uistate.UIState) bool {
+	key := strconv.Itoa(u.GameID) + "/players/" + strconv.Itoa(util.UserID) + "/settings_sg"
+	return logKeyValue(u.Service, u.Ctx, key, name)
+}
+
 // Note: The syntax replicates the way Croupier in Dart/Flutter writes keys.
 func getKey(playerId int, u *uistate.UIState) string {
 	t := int(time.Now().UnixNano() / 1000000)
diff --git a/go/src/hearts/syncbase/server/main.go b/go/src/hearts/syncbase/server/main.go
index 4c3a0f0..6291fd1 100644
--- a/go/src/hearts/syncbase/server/main.go
+++ b/go/src/hearts/syncbase/server/main.go
@@ -114,9 +114,9 @@
 	settingsTable.Put(u.Ctx, fmt.Sprintf("users/%d/settings", util.UserID), value)
 }
 
-// Creates a new set of gamelog and game settings syncgroups
-func CreateSyncgroups(ch chan string, u *uistate.UIState) {
-	fmt.Println("Creating Syncgroup")
+// Creates a new gamelog syncgroup
+func CreateLogSyncgroup(ch chan string, u *uistate.UIState) {
+	fmt.Println("Creating Log Syncgroup")
 	u.IsOwner = true
 	// Generate random gameID information to advertise this game
 	gameID := rand.Intn(1000000)
@@ -163,9 +163,25 @@
 		u.GameID = gameID
 		ch <- logSGName
 	}
-	// Create game settings syncgroup
+}
+
+// Creates a new user settings syncgroup
+func CreateSettingsSyncgroup(ch chan string, u *uistate.UIState) {
+	fmt.Println("Creating Settings Syncgroup")
+	allAccess := access.AccessList{In: []security.BlessingPattern{"..."}}
+	permissions := access.Permissions{
+		"Admin":   allAccess,
+		"Write":   allAccess,
+		"Read":    allAccess,
+		"Resolve": allAccess,
+		"Debug":   allAccess,
+	}
+	tables := []string{util.MountPoint + "/croupier"}
+	myInfoCreator := wire.SyncgroupMemberInfo{8, true}
+	app := u.Service.App(util.AppName)
+	db := app.NoSQLDatabase(util.DbName, nil)
 	settingsSGName := fmt.Sprintf("%s/croupier/%s/%%%%sync/discovery-%d", util.MountPoint, util.SBName, util.UserID)
-	settingsPref := wire.TableRow{util.SettingsName, ""}
+	settingsPref := wire.TableRow{util.SettingsName, fmt.Sprintf("users/%d", util.UserID)}
 	settingsPrefs := []wire.TableRow{settingsPref}
 	settingsSpec := wire.SyncgroupSpec{
 		Description: "croupier syncgroup",
@@ -175,7 +191,7 @@
 		IsPrivate:   false,
 	}
 	settingsSG := db.Syncgroup(settingsSGName)
-	err = settingsSG.Create(u.Ctx, settingsSpec, myInfoCreator)
+	err := settingsSG.Create(u.Ctx, settingsSpec, myInfoCreator)
 	if err != nil {
 		fmt.Println("SYNCGROUP CREATE ERROR: ", err)
 		ch <- ""
diff --git a/go/src/hearts/syncbase/util/util.go b/go/src/hearts/syncbase/util/util.go
index a24b8c8..202016f 100644
--- a/go/src/hearts/syncbase/util/util.go
+++ b/go/src/hearts/syncbase/util/util.go
@@ -8,12 +8,12 @@
 
 const (
 	// switch back to my mountpoint with the following code:
-	MountPoint = "users/emshack@google.com"
-	//MountPoint        = "/192.168.86.254:8101"
-	UserID            = 1223
+	//MountPoint = "users/emshack@google.com"
+	MountPoint        = "/192.168.86.254:8101"
+	UserID            = 123234234
 	UserColor         = 16777215
-	UserAvatar        = "player1.jpeg"
-	UserName          = "EmilyS"
+	UserAvatar        = "player0.jpeg"
+	UserName          = "Emily"
 	SBName            = "syncbase"
 	AppName           = "app"
 	DbName            = "db"
diff --git a/go/src/hearts/syncbase/watch/watch.go b/go/src/hearts/syncbase/watch/watch.go
index 2452590..e5bc8eb 100644
--- a/go/src/hearts/syncbase/watch/watch.go
+++ b/go/src/hearts/syncbase/watch/watch.go
@@ -45,7 +45,6 @@
 					fmt.Println("Unmarshal error:", err)
 				}
 				key := c.Row
-				fmt.Println(key, string(value))
 				userID, _ := strconv.Atoi(strings.Split(key, "/")[1])
 				u.UserData[userID] = valueMap
 			} else {
@@ -70,6 +69,7 @@
 					fmt.Println("Value error:", err)
 				}
 				valueStr := string(value)
+				fmt.Println(valueStr)
 				keyType := strings.Split(key, "/")[1]
 				switch keyType {
 				case "log":
@@ -87,7 +87,13 @@
 						onReady(valueStr, u)
 					}
 				case "players":
-					onPlayers(key, valueStr, u)
+					switch strings.Split(key, "/")[3] {
+					case "player_number":
+						onPlayerNum(key, valueStr, u)
+					case "settings_sg":
+						onSettings(key, valueStr, u)
+					}
+
 				}
 			} else {
 				fmt.Println("Unexpected ChangeType: ", c.ChangeType)
@@ -96,22 +102,21 @@
 	}
 }
 
-func onPlayers(key, value string, u *uistate.UIState) {
+func onPlayerNum(key, value string, u *uistate.UIState) {
 	userID, _ := strconv.Atoi(strings.Split(key, "/")[2])
 	playerNum, _ := strconv.Atoi(value)
 	u.PlayerData[playerNum] = userID
-	// user := u.UserData[userID]
-	// if user != nil {
-	// 	img := u.Texs[user["avatar"].(string)]
-	// 	name := user["name"].(string)
-	// 	u.CurTable.GetPlayers()[playerNum].SetIconImage(img)
-	// 	u.CurTable.GetPlayers()[playerNum].SetName(name)
-	// }
-	if u.CurView == uistate.Arrange {
+	if u.CurView == uistate.Arrange && !u.CurTable.AllReadyForNewRound() {
 		view.LoadArrangeView(u)
 	}
 }
 
+func onSettings(key, value string, u *uistate.UIState) {
+	joinDone := make(chan bool)
+	go client.JoinSettingsSyncgroup(joinDone, value, u)
+	<-joinDone
+}
+
 func onDeal(value string, u *uistate.UIState) {
 	playerInt, curCards := parsePlayerAndCards(value, u)
 	u.CurTable.GetPlayers()[playerInt].SetHand(curCards)
diff --git a/go/src/hearts/touchhandler/touchhandler.go b/go/src/hearts/touchhandler/touchhandler.go
index d7e545a..ac92827 100644
--- a/go/src/hearts/touchhandler/touchhandler.go
+++ b/go/src/hearts/touchhandler/touchhandler.go
@@ -106,12 +106,15 @@
 	buttonList := findClickedButton(t, u)
 	if len(buttonList) > 0 {
 		if buttonList[0] == u.Buttons[0] {
-			ch := make(chan string)
-			go server.CreateSyncgroups(ch, u)
-			gameStartData := <-ch
-			logName := <-ch
-			settingsName := <-ch
+			logCh := make(chan string)
+			settingsCh := make(chan string)
+			go server.CreateLogSyncgroup(logCh, u)
+			go server.CreateSettingsSyncgroup(settingsCh, u)
+			gameStartData := <-logCh
+			logName := <-logCh
+			settingsName := <-settingsCh
 			if logName != "" && settingsName != "" {
+				gamelog.LogSettingsName(settingsName, u)
 				u.ScanChan <- true
 				u.ScanChan = nil
 				u.SGChan = make(chan bool)
@@ -121,11 +124,20 @@
 		} else {
 			for _, b := range u.Buttons {
 				if buttonList[0] == b {
-					joinDone := make(chan bool)
+					joinLogDone := make(chan bool)
+					joinSettingsDone := make(chan bool)
 					settingsAddr := b.GetInfo()[0]
 					logAddr := b.GetInfo()[1]
-					go client.JoinSyncgroups(joinDone, logAddr, settingsAddr, u)
-					if success := <-joinDone; success {
+					go client.JoinLogSyncgroup(joinLogDone, logAddr, u)
+					go client.JoinSettingsSyncgroup(joinSettingsDone, settingsAddr, u)
+					<-joinSettingsDone
+					if success := <-joinLogDone; success {
+						settingsCh := make(chan string)
+						go server.CreateSettingsSyncgroup(settingsCh, u)
+						sgName := <-settingsCh
+						if sgName != "" {
+							gamelog.LogSettingsName(sgName, u)
+						}
 						u.ScanChan <- true
 						u.ScanChan = nil
 						view.LoadArrangeView(u)
@@ -150,7 +162,9 @@
 			gamelog.LogReady(u)
 		}
 		gamelog.LogPlayerNum(u)
-		view.LoadWaitingView(u)
+		if !u.CurTable.AllReadyForNewRound() {
+			view.LoadWaitingView(u)
+		}
 	}
 }
 
