Bump sky/flutter to 0.0.48, and use the sky_tool build and run-mojo
commands.

Pros:
* No more dependency on SKY_DIR!
* Simpler.

Cons:
* multi-process, config-file, and other flags are not passed through to
  mojo_shell yet.

Other things in this CL:
* I linted everything (sorry).
* Moved images from ./lib/images/ to ./images/
* Deleted everything related to "syncbase echo".

Change-Id: I9f4178be60220420673b6bedb51b8db7d7fffc55
diff --git a/.gitignore b/.gitignore
index 751fd3e..ae664c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,10 @@
 #TODO(nlacasse): Get rid of .v23 below once v23->jiri transition is complete.
 /.v23
 
+# Don't commit the bundled flutter app or snapshot.
+croupier.flx
+snapshot_blob.bin
+
 # Don’t commit the following directories created by pub.
 .buildlog
 .pub/
diff --git a/Makefile b/Makefile
index 14f1cab..a8c933f 100644
--- a/Makefile
+++ b/Makefile
@@ -3,21 +3,15 @@
 CROUPIER_DIR := $(shell pwd)
 SHELL := /bin/bash -euo pipefail
 
-# Sky wants us to use a later version of pub, so just in case, use theirs when getting packages.
-# TODO(alexfandrianto): How do I update my actual pub and my sublime pub?
-PATH := $(SKY_DIR)/src/third_party/dart-sdk/dart-sdk/bin:$(PATH)
-
 ifdef ANDROID
 	MOJO_ANDROID_FLAGS := --android
 
 	MOJO_BUILD_DIR := $(MOJO_DIR)/src/out/android_Debug
-	SKY_BUILD_DIR := $(SKY_DIR)/src/out/android_Debug
 	ETHER_BUILD_DIR := $(ETHER_DIR)/gen/mojo/android
 
 	SYNCBASE_DATA_DIR := /data/data/org.chromium.mojo.shell/app_home/syncbase_data
 else
 	MOJO_BUILD_DIR := $(MOJO_DIR)/src/out/Debug
-	SKY_BUILD_DIR := $(SKY_DIR)/src/out/Debug
 	ETHER_BUILD_DIR := $(ETHER_DIR)/gen/mojo/linux_amd64
 
 	SYNCBASE_DATA_DIR := /tmp/syncbase_data
@@ -28,8 +22,6 @@
 # very large, and can interfere with C++ memory if they are in the same
 # process.
 MOJO_SHELL_FLAGS := -v --enable-multiprocess \
-	--config-alias SKY_DIR=$(SKY_DIR) \
-	--config-alias SKY_BUILD_DIR=$(SKY_BUILD_DIR) \
 	--config-alias ETHER_DIR=$(ETHER_DIR) \
 	--config-alias ETHER_BUILD_DIR=$(ETHER_BUILD_DIR) \
 	--config-alias CROUPIER_DIR=$(CROUPIER_DIR)
@@ -55,9 +47,15 @@
 	dartanalyzer lib/main.dart | grep -v "\[warning\] The imported libraries"
 	dartanalyzer $(DART_TEST_FILES) | grep -v "\[warning\] The imported libraries"
 
+.PHONY: build
+build: croupier.flx
+
+croupier.flx: packages
+	pub run sky_tools -v build --manifest manifest.yaml --output-file $@
+
 .PHONY: start
-start: packages
-	./packages/sky/sky_tool start --checked
+start: croupier.flx env-check packages
+	pub run sky_tools -v --very-verbose run_mojo --mojo-path $(MOJO_DIR)/src --app $< $(MOJO_ANDROID_FLAGS)
 
 .PHONY: mock
 mock:
@@ -77,9 +75,6 @@
 ifndef MOJO_DIR
 	$(error MOJO_DIR is not set)
 endif
-ifndef SKY_DIR
-	$(error SKY_DIR is not set)
-endif
 ifndef V23_ROOT
 	$(error V23_ROOT is not set)
 endif
@@ -87,12 +82,6 @@
 	$(error ERROR: $(MOJO_BUILD_DIR) does not exist.  Please see README.md for instructions on compiling Mojo resources.)
 endif
 
-# Run the Sky program with mojo shell. This allows use of Syncbase and Mojo.
-# If syncbase doesn't load, it could be that port 4002 is still in use; try fuser 4002/tcp.
-.PHONY: start-with-mojo
-start-with-mojo: env-check packages
-	$(MOJO_DIR)/src/mojo/devtools/common/mojo_run --config-file $(PWD)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) 'https://core.mojoapps.io/kiosk_wm.mojo https://croupier.v.io/lib/main.dart'
-
 # TODO(alexfandrianto): I split off the syncbase logic from game.dart because it
 # would not run in a stand-alone VM. We will need to add mojo_test eventually.
 .PHONY: test
@@ -105,4 +94,8 @@
 
 .PHONY: clean
 clean:
-	rm -rf .packages packages .pubspec.lock
+	rm -f croupier.flx snapshot_blob.bin
+
+.PHONY: veryclean
+veryclean: clean
+	rm -rf .packages .pub packages pubspec.lock
diff --git a/lib/images/default/classic/down/c1.png b/images/default/classic/down/c1.png
similarity index 100%
rename from lib/images/default/classic/down/c1.png
rename to images/default/classic/down/c1.png
Binary files differ
diff --git a/lib/images/default/classic/down/c10.png b/images/default/classic/down/c10.png
similarity index 100%
rename from lib/images/default/classic/down/c10.png
rename to images/default/classic/down/c10.png
Binary files differ
diff --git a/lib/images/default/classic/down/c2.png b/images/default/classic/down/c2.png
similarity index 100%
rename from lib/images/default/classic/down/c2.png
rename to images/default/classic/down/c2.png
Binary files differ
diff --git a/lib/images/default/classic/down/c3.png b/images/default/classic/down/c3.png
similarity index 100%
rename from lib/images/default/classic/down/c3.png
rename to images/default/classic/down/c3.png
Binary files differ
diff --git a/lib/images/default/classic/down/c4.png b/images/default/classic/down/c4.png
similarity index 100%
rename from lib/images/default/classic/down/c4.png
rename to images/default/classic/down/c4.png
Binary files differ
diff --git a/lib/images/default/classic/down/c5.png b/images/default/classic/down/c5.png
similarity index 100%
rename from lib/images/default/classic/down/c5.png
rename to images/default/classic/down/c5.png
Binary files differ
diff --git a/lib/images/default/classic/down/c6.png b/images/default/classic/down/c6.png
similarity index 100%
rename from lib/images/default/classic/down/c6.png
rename to images/default/classic/down/c6.png
Binary files differ
diff --git a/lib/images/default/classic/down/c7.png b/images/default/classic/down/c7.png
similarity index 100%
rename from lib/images/default/classic/down/c7.png
rename to images/default/classic/down/c7.png
Binary files differ
diff --git a/lib/images/default/classic/down/c8.png b/images/default/classic/down/c8.png
similarity index 100%
rename from lib/images/default/classic/down/c8.png
rename to images/default/classic/down/c8.png
Binary files differ
diff --git a/lib/images/default/classic/down/c9.png b/images/default/classic/down/c9.png
similarity index 100%
rename from lib/images/default/classic/down/c9.png
rename to images/default/classic/down/c9.png
Binary files differ
diff --git a/lib/images/default/classic/down/cj.png b/images/default/classic/down/cj.png
similarity index 100%
rename from lib/images/default/classic/down/cj.png
rename to images/default/classic/down/cj.png
Binary files differ
diff --git a/lib/images/default/classic/down/ck.png b/images/default/classic/down/ck.png
similarity index 100%
rename from lib/images/default/classic/down/ck.png
rename to images/default/classic/down/ck.png
Binary files differ
diff --git a/lib/images/default/classic/down/cq.png b/images/default/classic/down/cq.png
similarity index 100%
rename from lib/images/default/classic/down/cq.png
rename to images/default/classic/down/cq.png
Binary files differ
diff --git a/lib/images/default/classic/down/d1.png b/images/default/classic/down/d1.png
similarity index 100%
rename from lib/images/default/classic/down/d1.png
rename to images/default/classic/down/d1.png
Binary files differ
diff --git a/lib/images/default/classic/down/d10.png b/images/default/classic/down/d10.png
similarity index 100%
rename from lib/images/default/classic/down/d10.png
rename to images/default/classic/down/d10.png
Binary files differ
diff --git a/lib/images/default/classic/down/d2.png b/images/default/classic/down/d2.png
similarity index 100%
rename from lib/images/default/classic/down/d2.png
rename to images/default/classic/down/d2.png
Binary files differ
diff --git a/lib/images/default/classic/down/d3.png b/images/default/classic/down/d3.png
similarity index 100%
rename from lib/images/default/classic/down/d3.png
rename to images/default/classic/down/d3.png
Binary files differ
diff --git a/lib/images/default/classic/down/d4.png b/images/default/classic/down/d4.png
similarity index 100%
rename from lib/images/default/classic/down/d4.png
rename to images/default/classic/down/d4.png
Binary files differ
diff --git a/lib/images/default/classic/down/d5.png b/images/default/classic/down/d5.png
similarity index 100%
rename from lib/images/default/classic/down/d5.png
rename to images/default/classic/down/d5.png
Binary files differ
diff --git a/lib/images/default/classic/down/d6.png b/images/default/classic/down/d6.png
similarity index 100%
rename from lib/images/default/classic/down/d6.png
rename to images/default/classic/down/d6.png
Binary files differ
diff --git a/lib/images/default/classic/down/d7.png b/images/default/classic/down/d7.png
similarity index 100%
rename from lib/images/default/classic/down/d7.png
rename to images/default/classic/down/d7.png
Binary files differ
diff --git a/lib/images/default/classic/down/d8.png b/images/default/classic/down/d8.png
similarity index 100%
rename from lib/images/default/classic/down/d8.png
rename to images/default/classic/down/d8.png
Binary files differ
diff --git a/lib/images/default/classic/down/d9.png b/images/default/classic/down/d9.png
similarity index 100%
rename from lib/images/default/classic/down/d9.png
rename to images/default/classic/down/d9.png
Binary files differ
diff --git a/lib/images/default/classic/down/dj.png b/images/default/classic/down/dj.png
similarity index 100%
rename from lib/images/default/classic/down/dj.png
rename to images/default/classic/down/dj.png
Binary files differ
diff --git a/lib/images/default/classic/down/dk.png b/images/default/classic/down/dk.png
similarity index 100%
rename from lib/images/default/classic/down/dk.png
rename to images/default/classic/down/dk.png
Binary files differ
diff --git a/lib/images/default/classic/down/dq.png b/images/default/classic/down/dq.png
similarity index 100%
rename from lib/images/default/classic/down/dq.png
rename to images/default/classic/down/dq.png
Binary files differ
diff --git a/lib/images/default/classic/down/h1.png b/images/default/classic/down/h1.png
similarity index 100%
rename from lib/images/default/classic/down/h1.png
rename to images/default/classic/down/h1.png
Binary files differ
diff --git a/lib/images/default/classic/down/h10.png b/images/default/classic/down/h10.png
similarity index 100%
rename from lib/images/default/classic/down/h10.png
rename to images/default/classic/down/h10.png
Binary files differ
diff --git a/lib/images/default/classic/down/h2.png b/images/default/classic/down/h2.png
similarity index 100%
rename from lib/images/default/classic/down/h2.png
rename to images/default/classic/down/h2.png
Binary files differ
diff --git a/lib/images/default/classic/down/h3.png b/images/default/classic/down/h3.png
similarity index 100%
rename from lib/images/default/classic/down/h3.png
rename to images/default/classic/down/h3.png
Binary files differ
diff --git a/lib/images/default/classic/down/h4.png b/images/default/classic/down/h4.png
similarity index 100%
rename from lib/images/default/classic/down/h4.png
rename to images/default/classic/down/h4.png
Binary files differ
diff --git a/lib/images/default/classic/down/h5.png b/images/default/classic/down/h5.png
similarity index 100%
rename from lib/images/default/classic/down/h5.png
rename to images/default/classic/down/h5.png
Binary files differ
diff --git a/lib/images/default/classic/down/h6.png b/images/default/classic/down/h6.png
similarity index 100%
rename from lib/images/default/classic/down/h6.png
rename to images/default/classic/down/h6.png
Binary files differ
diff --git a/lib/images/default/classic/down/h7.png b/images/default/classic/down/h7.png
similarity index 100%
rename from lib/images/default/classic/down/h7.png
rename to images/default/classic/down/h7.png
Binary files differ
diff --git a/lib/images/default/classic/down/h8.png b/images/default/classic/down/h8.png
similarity index 100%
rename from lib/images/default/classic/down/h8.png
rename to images/default/classic/down/h8.png
Binary files differ
diff --git a/lib/images/default/classic/down/h9.png b/images/default/classic/down/h9.png
similarity index 100%
rename from lib/images/default/classic/down/h9.png
rename to images/default/classic/down/h9.png
Binary files differ
diff --git a/lib/images/default/classic/down/hj.png b/images/default/classic/down/hj.png
similarity index 100%
rename from lib/images/default/classic/down/hj.png
rename to images/default/classic/down/hj.png
Binary files differ
diff --git a/lib/images/default/classic/down/hk.png b/images/default/classic/down/hk.png
similarity index 100%
rename from lib/images/default/classic/down/hk.png
rename to images/default/classic/down/hk.png
Binary files differ
diff --git a/lib/images/default/classic/down/hq.png b/images/default/classic/down/hq.png
similarity index 100%
rename from lib/images/default/classic/down/hq.png
rename to images/default/classic/down/hq.png
Binary files differ
diff --git a/lib/images/default/classic/down/s1.png b/images/default/classic/down/s1.png
similarity index 100%
rename from lib/images/default/classic/down/s1.png
rename to images/default/classic/down/s1.png
Binary files differ
diff --git a/lib/images/default/classic/down/s10.png b/images/default/classic/down/s10.png
similarity index 100%
rename from lib/images/default/classic/down/s10.png
rename to images/default/classic/down/s10.png
Binary files differ
diff --git a/lib/images/default/classic/down/s2.png b/images/default/classic/down/s2.png
similarity index 100%
rename from lib/images/default/classic/down/s2.png
rename to images/default/classic/down/s2.png
Binary files differ
diff --git a/lib/images/default/classic/down/s3.png b/images/default/classic/down/s3.png
similarity index 100%
rename from lib/images/default/classic/down/s3.png
rename to images/default/classic/down/s3.png
Binary files differ
diff --git a/lib/images/default/classic/down/s4.png b/images/default/classic/down/s4.png
similarity index 100%
rename from lib/images/default/classic/down/s4.png
rename to images/default/classic/down/s4.png
Binary files differ
diff --git a/lib/images/default/classic/down/s5.png b/images/default/classic/down/s5.png
similarity index 100%
rename from lib/images/default/classic/down/s5.png
rename to images/default/classic/down/s5.png
Binary files differ
diff --git a/lib/images/default/classic/down/s6.png b/images/default/classic/down/s6.png
similarity index 100%
rename from lib/images/default/classic/down/s6.png
rename to images/default/classic/down/s6.png
Binary files differ
diff --git a/lib/images/default/classic/down/s7.png b/images/default/classic/down/s7.png
similarity index 100%
rename from lib/images/default/classic/down/s7.png
rename to images/default/classic/down/s7.png
Binary files differ
diff --git a/lib/images/default/classic/down/s8.png b/images/default/classic/down/s8.png
similarity index 100%
rename from lib/images/default/classic/down/s8.png
rename to images/default/classic/down/s8.png
Binary files differ
diff --git a/lib/images/default/classic/down/s9.png b/images/default/classic/down/s9.png
similarity index 100%
rename from lib/images/default/classic/down/s9.png
rename to images/default/classic/down/s9.png
Binary files differ
diff --git a/lib/images/default/classic/down/sj.png b/images/default/classic/down/sj.png
similarity index 100%
rename from lib/images/default/classic/down/sj.png
rename to images/default/classic/down/sj.png
Binary files differ
diff --git a/lib/images/default/classic/down/sk.png b/images/default/classic/down/sk.png
similarity index 100%
rename from lib/images/default/classic/down/sk.png
rename to images/default/classic/down/sk.png
Binary files differ
diff --git a/lib/images/default/classic/down/sq.png b/images/default/classic/down/sq.png
similarity index 100%
rename from lib/images/default/classic/down/sq.png
rename to images/default/classic/down/sq.png
Binary files differ
diff --git a/lib/images/default/classic/up/c1.png b/images/default/classic/up/c1.png
similarity index 100%
rename from lib/images/default/classic/up/c1.png
rename to images/default/classic/up/c1.png
Binary files differ
diff --git a/lib/images/default/classic/up/c10.png b/images/default/classic/up/c10.png
similarity index 100%
rename from lib/images/default/classic/up/c10.png
rename to images/default/classic/up/c10.png
Binary files differ
diff --git a/lib/images/default/classic/up/c2.png b/images/default/classic/up/c2.png
similarity index 100%
rename from lib/images/default/classic/up/c2.png
rename to images/default/classic/up/c2.png
Binary files differ
diff --git a/lib/images/default/classic/up/c3.png b/images/default/classic/up/c3.png
similarity index 100%
rename from lib/images/default/classic/up/c3.png
rename to images/default/classic/up/c3.png
Binary files differ
diff --git a/lib/images/default/classic/up/c4.png b/images/default/classic/up/c4.png
similarity index 100%
rename from lib/images/default/classic/up/c4.png
rename to images/default/classic/up/c4.png
Binary files differ
diff --git a/lib/images/default/classic/up/c5.png b/images/default/classic/up/c5.png
similarity index 100%
rename from lib/images/default/classic/up/c5.png
rename to images/default/classic/up/c5.png
Binary files differ
diff --git a/lib/images/default/classic/up/c6.png b/images/default/classic/up/c6.png
similarity index 100%
rename from lib/images/default/classic/up/c6.png
rename to images/default/classic/up/c6.png
Binary files differ
diff --git a/lib/images/default/classic/up/c7.png b/images/default/classic/up/c7.png
similarity index 100%
rename from lib/images/default/classic/up/c7.png
rename to images/default/classic/up/c7.png
Binary files differ
diff --git a/lib/images/default/classic/up/c8.png b/images/default/classic/up/c8.png
similarity index 100%
rename from lib/images/default/classic/up/c8.png
rename to images/default/classic/up/c8.png
Binary files differ
diff --git a/lib/images/default/classic/up/c9.png b/images/default/classic/up/c9.png
similarity index 100%
rename from lib/images/default/classic/up/c9.png
rename to images/default/classic/up/c9.png
Binary files differ
diff --git a/lib/images/default/classic/up/cj.png b/images/default/classic/up/cj.png
similarity index 100%
rename from lib/images/default/classic/up/cj.png
rename to images/default/classic/up/cj.png
Binary files differ
diff --git a/lib/images/default/classic/up/ck.png b/images/default/classic/up/ck.png
similarity index 100%
rename from lib/images/default/classic/up/ck.png
rename to images/default/classic/up/ck.png
Binary files differ
diff --git a/lib/images/default/classic/up/cq.png b/images/default/classic/up/cq.png
similarity index 100%
rename from lib/images/default/classic/up/cq.png
rename to images/default/classic/up/cq.png
Binary files differ
diff --git a/lib/images/default/classic/up/d1.png b/images/default/classic/up/d1.png
similarity index 100%
rename from lib/images/default/classic/up/d1.png
rename to images/default/classic/up/d1.png
Binary files differ
diff --git a/lib/images/default/classic/up/d10.png b/images/default/classic/up/d10.png
similarity index 100%
rename from lib/images/default/classic/up/d10.png
rename to images/default/classic/up/d10.png
Binary files differ
diff --git a/lib/images/default/classic/up/d2.png b/images/default/classic/up/d2.png
similarity index 100%
rename from lib/images/default/classic/up/d2.png
rename to images/default/classic/up/d2.png
Binary files differ
diff --git a/lib/images/default/classic/up/d3.png b/images/default/classic/up/d3.png
similarity index 100%
rename from lib/images/default/classic/up/d3.png
rename to images/default/classic/up/d3.png
Binary files differ
diff --git a/lib/images/default/classic/up/d4.png b/images/default/classic/up/d4.png
similarity index 100%
rename from lib/images/default/classic/up/d4.png
rename to images/default/classic/up/d4.png
Binary files differ
diff --git a/lib/images/default/classic/up/d5.png b/images/default/classic/up/d5.png
similarity index 100%
rename from lib/images/default/classic/up/d5.png
rename to images/default/classic/up/d5.png
Binary files differ
diff --git a/lib/images/default/classic/up/d6.png b/images/default/classic/up/d6.png
similarity index 100%
rename from lib/images/default/classic/up/d6.png
rename to images/default/classic/up/d6.png
Binary files differ
diff --git a/lib/images/default/classic/up/d7.png b/images/default/classic/up/d7.png
similarity index 100%
rename from lib/images/default/classic/up/d7.png
rename to images/default/classic/up/d7.png
Binary files differ
diff --git a/lib/images/default/classic/up/d8.png b/images/default/classic/up/d8.png
similarity index 100%
rename from lib/images/default/classic/up/d8.png
rename to images/default/classic/up/d8.png
Binary files differ
diff --git a/lib/images/default/classic/up/d9.png b/images/default/classic/up/d9.png
similarity index 100%
rename from lib/images/default/classic/up/d9.png
rename to images/default/classic/up/d9.png
Binary files differ
diff --git a/lib/images/default/classic/up/dj.png b/images/default/classic/up/dj.png
similarity index 100%
rename from lib/images/default/classic/up/dj.png
rename to images/default/classic/up/dj.png
Binary files differ
diff --git a/lib/images/default/classic/up/dk.png b/images/default/classic/up/dk.png
similarity index 100%
rename from lib/images/default/classic/up/dk.png
rename to images/default/classic/up/dk.png
Binary files differ
diff --git a/lib/images/default/classic/up/dq.png b/images/default/classic/up/dq.png
similarity index 100%
rename from lib/images/default/classic/up/dq.png
rename to images/default/classic/up/dq.png
Binary files differ
diff --git a/lib/images/default/classic/up/h1.png b/images/default/classic/up/h1.png
similarity index 100%
rename from lib/images/default/classic/up/h1.png
rename to images/default/classic/up/h1.png
Binary files differ
diff --git a/lib/images/default/classic/up/h10.png b/images/default/classic/up/h10.png
similarity index 100%
rename from lib/images/default/classic/up/h10.png
rename to images/default/classic/up/h10.png
Binary files differ
diff --git a/lib/images/default/classic/up/h2.png b/images/default/classic/up/h2.png
similarity index 100%
rename from lib/images/default/classic/up/h2.png
rename to images/default/classic/up/h2.png
Binary files differ
diff --git a/lib/images/default/classic/up/h3.png b/images/default/classic/up/h3.png
similarity index 100%
rename from lib/images/default/classic/up/h3.png
rename to images/default/classic/up/h3.png
Binary files differ
diff --git a/lib/images/default/classic/up/h4.png b/images/default/classic/up/h4.png
similarity index 100%
rename from lib/images/default/classic/up/h4.png
rename to images/default/classic/up/h4.png
Binary files differ
diff --git a/lib/images/default/classic/up/h5.png b/images/default/classic/up/h5.png
similarity index 100%
rename from lib/images/default/classic/up/h5.png
rename to images/default/classic/up/h5.png
Binary files differ
diff --git a/lib/images/default/classic/up/h6.png b/images/default/classic/up/h6.png
similarity index 100%
rename from lib/images/default/classic/up/h6.png
rename to images/default/classic/up/h6.png
Binary files differ
diff --git a/lib/images/default/classic/up/h7.png b/images/default/classic/up/h7.png
similarity index 100%
rename from lib/images/default/classic/up/h7.png
rename to images/default/classic/up/h7.png
Binary files differ
diff --git a/lib/images/default/classic/up/h8.png b/images/default/classic/up/h8.png
similarity index 100%
rename from lib/images/default/classic/up/h8.png
rename to images/default/classic/up/h8.png
Binary files differ
diff --git a/lib/images/default/classic/up/h9.png b/images/default/classic/up/h9.png
similarity index 100%
rename from lib/images/default/classic/up/h9.png
rename to images/default/classic/up/h9.png
Binary files differ
diff --git a/lib/images/default/classic/up/hj.png b/images/default/classic/up/hj.png
similarity index 100%
rename from lib/images/default/classic/up/hj.png
rename to images/default/classic/up/hj.png
Binary files differ
diff --git a/lib/images/default/classic/up/hk.png b/images/default/classic/up/hk.png
similarity index 100%
rename from lib/images/default/classic/up/hk.png
rename to images/default/classic/up/hk.png
Binary files differ
diff --git a/lib/images/default/classic/up/hq.png b/images/default/classic/up/hq.png
similarity index 100%
rename from lib/images/default/classic/up/hq.png
rename to images/default/classic/up/hq.png
Binary files differ
diff --git a/lib/images/default/classic/up/s1.png b/images/default/classic/up/s1.png
similarity index 100%
rename from lib/images/default/classic/up/s1.png
rename to images/default/classic/up/s1.png
Binary files differ
diff --git a/lib/images/default/classic/up/s10.png b/images/default/classic/up/s10.png
similarity index 100%
rename from lib/images/default/classic/up/s10.png
rename to images/default/classic/up/s10.png
Binary files differ
diff --git a/lib/images/default/classic/up/s2.png b/images/default/classic/up/s2.png
similarity index 100%
rename from lib/images/default/classic/up/s2.png
rename to images/default/classic/up/s2.png
Binary files differ
diff --git a/lib/images/default/classic/up/s3.png b/images/default/classic/up/s3.png
similarity index 100%
rename from lib/images/default/classic/up/s3.png
rename to images/default/classic/up/s3.png
Binary files differ
diff --git a/lib/images/default/classic/up/s4.png b/images/default/classic/up/s4.png
similarity index 100%
rename from lib/images/default/classic/up/s4.png
rename to images/default/classic/up/s4.png
Binary files differ
diff --git a/lib/images/default/classic/up/s5.png b/images/default/classic/up/s5.png
similarity index 100%
rename from lib/images/default/classic/up/s5.png
rename to images/default/classic/up/s5.png
Binary files differ
diff --git a/lib/images/default/classic/up/s6.png b/images/default/classic/up/s6.png
similarity index 100%
rename from lib/images/default/classic/up/s6.png
rename to images/default/classic/up/s6.png
Binary files differ
diff --git a/lib/images/default/classic/up/s7.png b/images/default/classic/up/s7.png
similarity index 100%
rename from lib/images/default/classic/up/s7.png
rename to images/default/classic/up/s7.png
Binary files differ
diff --git a/lib/images/default/classic/up/s8.png b/images/default/classic/up/s8.png
similarity index 100%
rename from lib/images/default/classic/up/s8.png
rename to images/default/classic/up/s8.png
Binary files differ
diff --git a/lib/images/default/classic/up/s9.png b/images/default/classic/up/s9.png
similarity index 100%
rename from lib/images/default/classic/up/s9.png
rename to images/default/classic/up/s9.png
Binary files differ
diff --git a/lib/images/default/classic/up/sj.png b/images/default/classic/up/sj.png
similarity index 100%
rename from lib/images/default/classic/up/sj.png
rename to images/default/classic/up/sj.png
Binary files differ
diff --git a/lib/images/default/classic/up/sk.png b/images/default/classic/up/sk.png
similarity index 100%
rename from lib/images/default/classic/up/sk.png
rename to images/default/classic/up/sk.png
Binary files differ
diff --git a/lib/images/default/classic/up/sq.png b/images/default/classic/up/sq.png
similarity index 100%
rename from lib/images/default/classic/up/sq.png
rename to images/default/classic/up/sq.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c1.png b/images/redback/classic/down/c1.png
similarity index 100%
rename from lib/images/redback/classic/down/c1.png
rename to images/redback/classic/down/c1.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c10.png b/images/redback/classic/down/c10.png
similarity index 100%
rename from lib/images/redback/classic/down/c10.png
rename to images/redback/classic/down/c10.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c2.png b/images/redback/classic/down/c2.png
similarity index 100%
rename from lib/images/redback/classic/down/c2.png
rename to images/redback/classic/down/c2.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c3.png b/images/redback/classic/down/c3.png
similarity index 100%
rename from lib/images/redback/classic/down/c3.png
rename to images/redback/classic/down/c3.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c4.png b/images/redback/classic/down/c4.png
similarity index 100%
rename from lib/images/redback/classic/down/c4.png
rename to images/redback/classic/down/c4.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c5.png b/images/redback/classic/down/c5.png
similarity index 100%
rename from lib/images/redback/classic/down/c5.png
rename to images/redback/classic/down/c5.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c6.png b/images/redback/classic/down/c6.png
similarity index 100%
rename from lib/images/redback/classic/down/c6.png
rename to images/redback/classic/down/c6.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c7.png b/images/redback/classic/down/c7.png
similarity index 100%
rename from lib/images/redback/classic/down/c7.png
rename to images/redback/classic/down/c7.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c8.png b/images/redback/classic/down/c8.png
similarity index 100%
rename from lib/images/redback/classic/down/c8.png
rename to images/redback/classic/down/c8.png
Binary files differ
diff --git a/lib/images/redback/classic/down/c9.png b/images/redback/classic/down/c9.png
similarity index 100%
rename from lib/images/redback/classic/down/c9.png
rename to images/redback/classic/down/c9.png
Binary files differ
diff --git a/lib/images/redback/classic/down/cj.png b/images/redback/classic/down/cj.png
similarity index 100%
rename from lib/images/redback/classic/down/cj.png
rename to images/redback/classic/down/cj.png
Binary files differ
diff --git a/lib/images/redback/classic/down/ck.png b/images/redback/classic/down/ck.png
similarity index 100%
rename from lib/images/redback/classic/down/ck.png
rename to images/redback/classic/down/ck.png
Binary files differ
diff --git a/lib/images/redback/classic/down/cq.png b/images/redback/classic/down/cq.png
similarity index 100%
rename from lib/images/redback/classic/down/cq.png
rename to images/redback/classic/down/cq.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d1.png b/images/redback/classic/down/d1.png
similarity index 100%
rename from lib/images/redback/classic/down/d1.png
rename to images/redback/classic/down/d1.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d10.png b/images/redback/classic/down/d10.png
similarity index 100%
rename from lib/images/redback/classic/down/d10.png
rename to images/redback/classic/down/d10.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d2.png b/images/redback/classic/down/d2.png
similarity index 100%
rename from lib/images/redback/classic/down/d2.png
rename to images/redback/classic/down/d2.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d3.png b/images/redback/classic/down/d3.png
similarity index 100%
rename from lib/images/redback/classic/down/d3.png
rename to images/redback/classic/down/d3.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d4.png b/images/redback/classic/down/d4.png
similarity index 100%
rename from lib/images/redback/classic/down/d4.png
rename to images/redback/classic/down/d4.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d5.png b/images/redback/classic/down/d5.png
similarity index 100%
rename from lib/images/redback/classic/down/d5.png
rename to images/redback/classic/down/d5.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d6.png b/images/redback/classic/down/d6.png
similarity index 100%
rename from lib/images/redback/classic/down/d6.png
rename to images/redback/classic/down/d6.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d7.png b/images/redback/classic/down/d7.png
similarity index 100%
rename from lib/images/redback/classic/down/d7.png
rename to images/redback/classic/down/d7.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d8.png b/images/redback/classic/down/d8.png
similarity index 100%
rename from lib/images/redback/classic/down/d8.png
rename to images/redback/classic/down/d8.png
Binary files differ
diff --git a/lib/images/redback/classic/down/d9.png b/images/redback/classic/down/d9.png
similarity index 100%
rename from lib/images/redback/classic/down/d9.png
rename to images/redback/classic/down/d9.png
Binary files differ
diff --git a/lib/images/redback/classic/down/dj.png b/images/redback/classic/down/dj.png
similarity index 100%
rename from lib/images/redback/classic/down/dj.png
rename to images/redback/classic/down/dj.png
Binary files differ
diff --git a/lib/images/redback/classic/down/dk.png b/images/redback/classic/down/dk.png
similarity index 100%
rename from lib/images/redback/classic/down/dk.png
rename to images/redback/classic/down/dk.png
Binary files differ
diff --git a/lib/images/redback/classic/down/dq.png b/images/redback/classic/down/dq.png
similarity index 100%
rename from lib/images/redback/classic/down/dq.png
rename to images/redback/classic/down/dq.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h1.png b/images/redback/classic/down/h1.png
similarity index 100%
rename from lib/images/redback/classic/down/h1.png
rename to images/redback/classic/down/h1.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h10.png b/images/redback/classic/down/h10.png
similarity index 100%
rename from lib/images/redback/classic/down/h10.png
rename to images/redback/classic/down/h10.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h2.png b/images/redback/classic/down/h2.png
similarity index 100%
rename from lib/images/redback/classic/down/h2.png
rename to images/redback/classic/down/h2.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h3.png b/images/redback/classic/down/h3.png
similarity index 100%
rename from lib/images/redback/classic/down/h3.png
rename to images/redback/classic/down/h3.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h4.png b/images/redback/classic/down/h4.png
similarity index 100%
rename from lib/images/redback/classic/down/h4.png
rename to images/redback/classic/down/h4.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h5.png b/images/redback/classic/down/h5.png
similarity index 100%
rename from lib/images/redback/classic/down/h5.png
rename to images/redback/classic/down/h5.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h6.png b/images/redback/classic/down/h6.png
similarity index 100%
rename from lib/images/redback/classic/down/h6.png
rename to images/redback/classic/down/h6.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h7.png b/images/redback/classic/down/h7.png
similarity index 100%
rename from lib/images/redback/classic/down/h7.png
rename to images/redback/classic/down/h7.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h8.png b/images/redback/classic/down/h8.png
similarity index 100%
rename from lib/images/redback/classic/down/h8.png
rename to images/redback/classic/down/h8.png
Binary files differ
diff --git a/lib/images/redback/classic/down/h9.png b/images/redback/classic/down/h9.png
similarity index 100%
rename from lib/images/redback/classic/down/h9.png
rename to images/redback/classic/down/h9.png
Binary files differ
diff --git a/lib/images/redback/classic/down/hj.png b/images/redback/classic/down/hj.png
similarity index 100%
rename from lib/images/redback/classic/down/hj.png
rename to images/redback/classic/down/hj.png
Binary files differ
diff --git a/lib/images/redback/classic/down/hk.png b/images/redback/classic/down/hk.png
similarity index 100%
rename from lib/images/redback/classic/down/hk.png
rename to images/redback/classic/down/hk.png
Binary files differ
diff --git a/lib/images/redback/classic/down/hq.png b/images/redback/classic/down/hq.png
similarity index 100%
rename from lib/images/redback/classic/down/hq.png
rename to images/redback/classic/down/hq.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s1.png b/images/redback/classic/down/s1.png
similarity index 100%
rename from lib/images/redback/classic/down/s1.png
rename to images/redback/classic/down/s1.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s10.png b/images/redback/classic/down/s10.png
similarity index 100%
rename from lib/images/redback/classic/down/s10.png
rename to images/redback/classic/down/s10.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s2.png b/images/redback/classic/down/s2.png
similarity index 100%
rename from lib/images/redback/classic/down/s2.png
rename to images/redback/classic/down/s2.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s3.png b/images/redback/classic/down/s3.png
similarity index 100%
rename from lib/images/redback/classic/down/s3.png
rename to images/redback/classic/down/s3.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s4.png b/images/redback/classic/down/s4.png
similarity index 100%
rename from lib/images/redback/classic/down/s4.png
rename to images/redback/classic/down/s4.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s5.png b/images/redback/classic/down/s5.png
similarity index 100%
rename from lib/images/redback/classic/down/s5.png
rename to images/redback/classic/down/s5.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s6.png b/images/redback/classic/down/s6.png
similarity index 100%
rename from lib/images/redback/classic/down/s6.png
rename to images/redback/classic/down/s6.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s7.png b/images/redback/classic/down/s7.png
similarity index 100%
rename from lib/images/redback/classic/down/s7.png
rename to images/redback/classic/down/s7.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s8.png b/images/redback/classic/down/s8.png
similarity index 100%
rename from lib/images/redback/classic/down/s8.png
rename to images/redback/classic/down/s8.png
Binary files differ
diff --git a/lib/images/redback/classic/down/s9.png b/images/redback/classic/down/s9.png
similarity index 100%
rename from lib/images/redback/classic/down/s9.png
rename to images/redback/classic/down/s9.png
Binary files differ
diff --git a/lib/images/redback/classic/down/sj.png b/images/redback/classic/down/sj.png
similarity index 100%
rename from lib/images/redback/classic/down/sj.png
rename to images/redback/classic/down/sj.png
Binary files differ
diff --git a/lib/images/redback/classic/down/sk.png b/images/redback/classic/down/sk.png
similarity index 100%
rename from lib/images/redback/classic/down/sk.png
rename to images/redback/classic/down/sk.png
Binary files differ
diff --git a/lib/images/redback/classic/down/sq.png b/images/redback/classic/down/sq.png
similarity index 100%
rename from lib/images/redback/classic/down/sq.png
rename to images/redback/classic/down/sq.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c1.png b/images/redback/classic/up/c1.png
similarity index 100%
rename from lib/images/redback/classic/up/c1.png
rename to images/redback/classic/up/c1.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c10.png b/images/redback/classic/up/c10.png
similarity index 100%
rename from lib/images/redback/classic/up/c10.png
rename to images/redback/classic/up/c10.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c2.png b/images/redback/classic/up/c2.png
similarity index 100%
rename from lib/images/redback/classic/up/c2.png
rename to images/redback/classic/up/c2.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c3.png b/images/redback/classic/up/c3.png
similarity index 100%
rename from lib/images/redback/classic/up/c3.png
rename to images/redback/classic/up/c3.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c4.png b/images/redback/classic/up/c4.png
similarity index 100%
rename from lib/images/redback/classic/up/c4.png
rename to images/redback/classic/up/c4.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c5.png b/images/redback/classic/up/c5.png
similarity index 100%
rename from lib/images/redback/classic/up/c5.png
rename to images/redback/classic/up/c5.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c6.png b/images/redback/classic/up/c6.png
similarity index 100%
rename from lib/images/redback/classic/up/c6.png
rename to images/redback/classic/up/c6.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c7.png b/images/redback/classic/up/c7.png
similarity index 100%
rename from lib/images/redback/classic/up/c7.png
rename to images/redback/classic/up/c7.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c8.png b/images/redback/classic/up/c8.png
similarity index 100%
rename from lib/images/redback/classic/up/c8.png
rename to images/redback/classic/up/c8.png
Binary files differ
diff --git a/lib/images/redback/classic/up/c9.png b/images/redback/classic/up/c9.png
similarity index 100%
rename from lib/images/redback/classic/up/c9.png
rename to images/redback/classic/up/c9.png
Binary files differ
diff --git a/lib/images/redback/classic/up/cj.png b/images/redback/classic/up/cj.png
similarity index 100%
rename from lib/images/redback/classic/up/cj.png
rename to images/redback/classic/up/cj.png
Binary files differ
diff --git a/lib/images/redback/classic/up/ck.png b/images/redback/classic/up/ck.png
similarity index 100%
rename from lib/images/redback/classic/up/ck.png
rename to images/redback/classic/up/ck.png
Binary files differ
diff --git a/lib/images/redback/classic/up/cq.png b/images/redback/classic/up/cq.png
similarity index 100%
rename from lib/images/redback/classic/up/cq.png
rename to images/redback/classic/up/cq.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d1.png b/images/redback/classic/up/d1.png
similarity index 100%
rename from lib/images/redback/classic/up/d1.png
rename to images/redback/classic/up/d1.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d10.png b/images/redback/classic/up/d10.png
similarity index 100%
rename from lib/images/redback/classic/up/d10.png
rename to images/redback/classic/up/d10.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d2.png b/images/redback/classic/up/d2.png
similarity index 100%
rename from lib/images/redback/classic/up/d2.png
rename to images/redback/classic/up/d2.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d3.png b/images/redback/classic/up/d3.png
similarity index 100%
rename from lib/images/redback/classic/up/d3.png
rename to images/redback/classic/up/d3.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d4.png b/images/redback/classic/up/d4.png
similarity index 100%
rename from lib/images/redback/classic/up/d4.png
rename to images/redback/classic/up/d4.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d5.png b/images/redback/classic/up/d5.png
similarity index 100%
rename from lib/images/redback/classic/up/d5.png
rename to images/redback/classic/up/d5.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d6.png b/images/redback/classic/up/d6.png
similarity index 100%
rename from lib/images/redback/classic/up/d6.png
rename to images/redback/classic/up/d6.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d7.png b/images/redback/classic/up/d7.png
similarity index 100%
rename from lib/images/redback/classic/up/d7.png
rename to images/redback/classic/up/d7.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d8.png b/images/redback/classic/up/d8.png
similarity index 100%
rename from lib/images/redback/classic/up/d8.png
rename to images/redback/classic/up/d8.png
Binary files differ
diff --git a/lib/images/redback/classic/up/d9.png b/images/redback/classic/up/d9.png
similarity index 100%
rename from lib/images/redback/classic/up/d9.png
rename to images/redback/classic/up/d9.png
Binary files differ
diff --git a/lib/images/redback/classic/up/dj.png b/images/redback/classic/up/dj.png
similarity index 100%
rename from lib/images/redback/classic/up/dj.png
rename to images/redback/classic/up/dj.png
Binary files differ
diff --git a/lib/images/redback/classic/up/dk.png b/images/redback/classic/up/dk.png
similarity index 100%
rename from lib/images/redback/classic/up/dk.png
rename to images/redback/classic/up/dk.png
Binary files differ
diff --git a/lib/images/redback/classic/up/dq.png b/images/redback/classic/up/dq.png
similarity index 100%
rename from lib/images/redback/classic/up/dq.png
rename to images/redback/classic/up/dq.png
Binary files differ
diff --git a/lib/images/redback/classic/up/ec.png b/images/redback/classic/up/ec.png
similarity index 100%
rename from lib/images/redback/classic/up/ec.png
rename to images/redback/classic/up/ec.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h1.png b/images/redback/classic/up/h1.png
similarity index 100%
rename from lib/images/redback/classic/up/h1.png
rename to images/redback/classic/up/h1.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h10.png b/images/redback/classic/up/h10.png
similarity index 100%
rename from lib/images/redback/classic/up/h10.png
rename to images/redback/classic/up/h10.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h2.png b/images/redback/classic/up/h2.png
similarity index 100%
rename from lib/images/redback/classic/up/h2.png
rename to images/redback/classic/up/h2.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h3.png b/images/redback/classic/up/h3.png
similarity index 100%
rename from lib/images/redback/classic/up/h3.png
rename to images/redback/classic/up/h3.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h4.png b/images/redback/classic/up/h4.png
similarity index 100%
rename from lib/images/redback/classic/up/h4.png
rename to images/redback/classic/up/h4.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h5.png b/images/redback/classic/up/h5.png
similarity index 100%
rename from lib/images/redback/classic/up/h5.png
rename to images/redback/classic/up/h5.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h6.png b/images/redback/classic/up/h6.png
similarity index 100%
rename from lib/images/redback/classic/up/h6.png
rename to images/redback/classic/up/h6.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h7.png b/images/redback/classic/up/h7.png
similarity index 100%
rename from lib/images/redback/classic/up/h7.png
rename to images/redback/classic/up/h7.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h8.png b/images/redback/classic/up/h8.png
similarity index 100%
rename from lib/images/redback/classic/up/h8.png
rename to images/redback/classic/up/h8.png
Binary files differ
diff --git a/lib/images/redback/classic/up/h9.png b/images/redback/classic/up/h9.png
similarity index 100%
rename from lib/images/redback/classic/up/h9.png
rename to images/redback/classic/up/h9.png
Binary files differ
diff --git a/lib/images/redback/classic/up/hj.png b/images/redback/classic/up/hj.png
similarity index 100%
rename from lib/images/redback/classic/up/hj.png
rename to images/redback/classic/up/hj.png
Binary files differ
diff --git a/lib/images/redback/classic/up/hk.png b/images/redback/classic/up/hk.png
similarity index 100%
rename from lib/images/redback/classic/up/hk.png
rename to images/redback/classic/up/hk.png
Binary files differ
diff --git a/lib/images/redback/classic/up/hq.png b/images/redback/classic/up/hq.png
similarity index 100%
rename from lib/images/redback/classic/up/hq.png
rename to images/redback/classic/up/hq.png
Binary files differ
diff --git a/lib/images/redback/classic/up/index.html b/images/redback/classic/up/index.html
similarity index 100%
rename from lib/images/redback/classic/up/index.html
rename to images/redback/classic/up/index.html
diff --git a/lib/images/redback/classic/up/jb.png b/images/redback/classic/up/jb.png
similarity index 100%
rename from lib/images/redback/classic/up/jb.png
rename to images/redback/classic/up/jb.png
Binary files differ
diff --git a/lib/images/redback/classic/up/jr.png b/images/redback/classic/up/jr.png
similarity index 100%
rename from lib/images/redback/classic/up/jr.png
rename to images/redback/classic/up/jr.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s1.png b/images/redback/classic/up/s1.png
similarity index 100%
rename from lib/images/redback/classic/up/s1.png
rename to images/redback/classic/up/s1.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s10.png b/images/redback/classic/up/s10.png
similarity index 100%
rename from lib/images/redback/classic/up/s10.png
rename to images/redback/classic/up/s10.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s2.png b/images/redback/classic/up/s2.png
similarity index 100%
rename from lib/images/redback/classic/up/s2.png
rename to images/redback/classic/up/s2.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s3.png b/images/redback/classic/up/s3.png
similarity index 100%
rename from lib/images/redback/classic/up/s3.png
rename to images/redback/classic/up/s3.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s4.png b/images/redback/classic/up/s4.png
similarity index 100%
rename from lib/images/redback/classic/up/s4.png
rename to images/redback/classic/up/s4.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s5.png b/images/redback/classic/up/s5.png
similarity index 100%
rename from lib/images/redback/classic/up/s5.png
rename to images/redback/classic/up/s5.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s6.png b/images/redback/classic/up/s6.png
similarity index 100%
rename from lib/images/redback/classic/up/s6.png
rename to images/redback/classic/up/s6.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s7.png b/images/redback/classic/up/s7.png
similarity index 100%
rename from lib/images/redback/classic/up/s7.png
rename to images/redback/classic/up/s7.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s8.png b/images/redback/classic/up/s8.png
similarity index 100%
rename from lib/images/redback/classic/up/s8.png
rename to images/redback/classic/up/s8.png
Binary files differ
diff --git a/lib/images/redback/classic/up/s9.png b/images/redback/classic/up/s9.png
similarity index 100%
rename from lib/images/redback/classic/up/s9.png
rename to images/redback/classic/up/s9.png
Binary files differ
diff --git a/lib/images/redback/classic/up/sj.png b/images/redback/classic/up/sj.png
similarity index 100%
rename from lib/images/redback/classic/up/sj.png
rename to images/redback/classic/up/sj.png
Binary files differ
diff --git a/lib/images/redback/classic/up/sk.png b/images/redback/classic/up/sk.png
similarity index 100%
rename from lib/images/redback/classic/up/sk.png
rename to images/redback/classic/up/sk.png
Binary files differ
diff --git a/lib/images/redback/classic/up/sq.png b/images/redback/classic/up/sq.png
similarity index 100%
rename from lib/images/redback/classic/up/sq.png
rename to images/redback/classic/up/sq.png
Binary files differ
diff --git a/lib/images/suits/Club.png b/images/suits/Club.png
similarity index 100%
rename from lib/images/suits/Club.png
rename to images/suits/Club.png
Binary files differ
diff --git a/lib/images/suits/Diamond.png b/images/suits/Diamond.png
similarity index 100%
rename from lib/images/suits/Diamond.png
rename to images/suits/Diamond.png
Binary files differ
diff --git a/lib/images/suits/Heart.png b/images/suits/Heart.png
similarity index 100%
rename from lib/images/suits/Heart.png
rename to images/suits/Heart.png
Binary files differ
diff --git a/lib/images/suits/Spade.png b/images/suits/Spade.png
similarity index 100%
rename from lib/images/suits/Spade.png
rename to images/suits/Spade.png
Binary files differ
diff --git a/lib/components/card.dart b/lib/components/card.dart
index 615ef4d..e6f4034 100644
--- a/lib/components/card.dart
+++ b/lib/components/card.dart
@@ -15,12 +15,8 @@
 
   widgets.Widget build() {
     return new widgets.Listener(
-      child: new widgets.Container(
-        width: width,
-        height: height,
-        child: _imageFromCard(card, faceUp)
-      )
-    );
+        child: new widgets.Container(
+            width: width, height: height, child: _imageFromCard(card, faceUp)));
   }
 
   static widgets.Widget _imageFromCard(logic_card.Card c, bool faceUp) {
diff --git a/lib/components/card_collection.dart b/lib/components/card_collection.dart
index 03b6ccb..f4f98a3 100644
--- a/lib/components/card_collection.dart
+++ b/lib/components/card_collection.dart
@@ -9,7 +9,7 @@
 
 import 'dart:math' as math;
 import 'package:sky/widgets.dart';
-import 'package:sky/theme/colors.dart' as colors;
+import 'package:sky/material.dart' as material;
 
 enum Orientation { vert, horz, fan, show1, suit }
 enum DropType {
@@ -45,15 +45,19 @@
 
   CardCollectionComponent(
       this.cards, this.faceUp, this.orientation, this.parentCallback,
-      {this.dragChildren: false, this.acceptType: DropType.none, this.comparator: null,
-      this.width: DEFAULT_WIDTH, this.widthCard: DEFAULT_CARD_WIDTH, this.heightCard: DEFAULT_CARD_HEIGHT,
-      this.backgroundColor, this.altColor}) {
-
+      {this.dragChildren: false,
+      this.acceptType: DropType.none,
+      this.comparator: null,
+      this.width: DEFAULT_WIDTH,
+      this.widthCard: DEFAULT_CARD_WIDTH,
+      this.heightCard: DEFAULT_CARD_HEIGHT,
+      this.backgroundColor,
+      this.altColor}) {
     if (this.backgroundColor == null) {
-      backgroundColor = colors.Grey[500];
+      backgroundColor = material.Colors.grey[500];
     }
     if (this.altColor == null) {
-      altColor = colors.Grey[600];
+      altColor = material.Colors.grey[600];
     }
   }
 
@@ -140,38 +144,37 @@
     if (cardWidgets.length == 0) {
       // Just return a centered background image.
       return new Container(
-        decoration: new BoxDecoration(backgroundColor: this.backgroundColor),
-        height: _produceRowHeight,
-        width: this.width,
-        child: new Center(child: new Opacity(
-          opacity: 0.45,
-          child: new Container(
-            height: heightCard,
-            child: emptyBackgroundImage == "" ? null : new NetworkImage(src: emptyBackgroundImage)
-          )
-        ))
-      );
+          decoration: new BoxDecoration(backgroundColor: this.backgroundColor),
+          height: _produceRowHeight,
+          width: this.width,
+          child: new Center(
+              child: new Opacity(
+                  opacity: 0.45,
+                  child: new Container(
+                      height: heightCard,
+                      child: emptyBackgroundImage == ""
+                          ? null
+                          : new NetworkImage(src: emptyBackgroundImage)))));
     }
 
     // Let's do a stack of positioned cards!
     List<Widget> kids = new List<Widget>();
 
-    double w =  this.width ?? widthCard * 5;
-    double spacing = math.min(widthCard + CARD_MARGIN * 2, (w - widthCard - 2 * CARD_MARGIN) / (cardWidgets.length - 1));
+    double w = this.width ?? widthCard * 5;
+    double spacing = math.min(widthCard + CARD_MARGIN * 2,
+        (w - widthCard - 2 * CARD_MARGIN) / (cardWidgets.length - 1));
 
     for (int i = 0; i < cardWidgets.length; i++) {
       kids.add(new Positioned(
-        top: CARD_MARGIN,
-        left: CARD_MARGIN + spacing * i,
-        child: cardWidgets[i]
-      ));
+          top: CARD_MARGIN,
+          left: CARD_MARGIN + spacing * i,
+          child: cardWidgets[i]));
     }
     return new Container(
-      decoration: new BoxDecoration(backgroundColor: this.backgroundColor),
-      height: _produceRowHeight,
-      width: this.width,
-      child: new Stack(kids)
-    );
+        decoration: new BoxDecoration(backgroundColor: this.backgroundColor),
+        height: _produceRowHeight,
+        width: this.width,
+        child: new Stack(kids));
   }
 
   double get _whiteLineHeight => WHITE_LINE_HEIGHT;
@@ -195,11 +198,11 @@
         List<Widget> ss = new List<Widget>();
 
         List<logic_card.Card> theCards =
-          this.comparator != null ? this._sortedCards : this.cards;
+            this.comparator != null ? this._sortedCards : this.cards;
         for (int i = 0; i < theCards.length; i++) {
           // Group by suit. Then sort.
           logic_card.Card c = theCards[i];
-          switch(c.identifier[0]) {
+          switch (c.identifier[0]) {
             case 'c':
               cs.add(cardWidgets[i]);
               break;
@@ -217,26 +220,26 @@
           }
         }
         return new Container(
-          decoration: new BoxDecoration(backgroundColor: colors.white),
-          child: new Stack(<Widget>[
-            new Positioned(
-              top: 0.0,
-              child: _produceRow(ss, emptyBackgroundImage: "images/suits/Spade.png")
-            ),
-            new Positioned(
-              top: _produceRowHeight + _whiteLineHeight,
-              child: _produceRow(hs, emptyBackgroundImage: "images/suits/Heart.png")
-            ),
-            new Positioned(
-              top: 2 * _produceRowHeight + 2 * _whiteLineHeight,
-              child: _produceRow(cs, emptyBackgroundImage: "images/suits/Club.png")
-            ),
-            new Positioned(
-              top: 3 * _produceRowHeight + 3 * _whiteLineHeight,
-              child: _produceRow(ds, emptyBackgroundImage: "images/suits/Diamond.png")
-            )
-          ])
-        );
+            decoration:
+                new BoxDecoration(backgroundColor: material.Colors.white),
+            child: new Stack(<Widget>[
+              new Positioned(
+                  top: 0.0,
+                  child: _produceRow(ss,
+                      emptyBackgroundImage: "images/suits/Spade.png")),
+              new Positioned(
+                  top: _produceRowHeight + _whiteLineHeight,
+                  child: _produceRow(hs,
+                      emptyBackgroundImage: "images/suits/Heart.png")),
+              new Positioned(
+                  top: 2 * _produceRowHeight + 2 * _whiteLineHeight,
+                  child: _produceRow(cs,
+                      emptyBackgroundImage: "images/suits/Club.png")),
+              new Positioned(
+                  top: 3 * _produceRowHeight + 3 * _whiteLineHeight,
+                  child: _produceRow(ds,
+                      emptyBackgroundImage: "images/suits/Diamond.png"))
+            ]));
       default:
         assert(false);
         return null;
@@ -249,10 +252,12 @@
 
   Widget _buildCollection() {
     List<Widget> cardComponents = new List<Widget>();
-    List<logic_card.Card> cs = this.comparator != null ? this._sortedCards : this.cards;
+    List<logic_card.Card> cs =
+        this.comparator != null ? this._sortedCards : this.cards;
 
     for (int i = 0; i < cs.length; i++) {
-      component_card.Card c = new component_card.Card(cs[i], faceUp, width: widthCard, height: heightCard);
+      component_card.Card c = new component_card.Card(cs[i], faceUp,
+          width: widthCard, height: heightCard);
 
       if (dragChildren) {
         cardComponents.add(new Draggable<component_card.Card>(c));
@@ -267,8 +272,8 @@
     switch (this.acceptType) {
       case DropType.none:
         return new Container(
-            decoration: new BoxDecoration(
-                backgroundColor: this.backgroundColor),
+            decoration:
+                new BoxDecoration(backgroundColor: this.backgroundColor),
             height: this.desiredHeight,
             width: this.desiredWidth,
             child: wrapCards(cardComponents));
diff --git a/lib/components/croupier.dart b/lib/components/croupier.dart
index 80616e9..d86715f 100644
--- a/lib/components/croupier.dart
+++ b/lib/components/croupier.dart
@@ -33,10 +33,7 @@
   }
 
   Widget build() {
-    return new SizeObserver(
-      callback: sizeChanged,
-      child: _buildHelper()
-    );
+    return new SizeObserver(callback: sizeChanged, child: _buildHelper());
   }
 
   Widget _buildHelper() {
@@ -71,12 +68,7 @@
                       logic_croupier.CroupierState.PlayGame,
                       logic_game.GameType.Hearts)),
               new FlatButton(child: new Text('Poker')),
-              new FlatButton(child: new Text('Solitaire')),
-              new FlatButton(
-                  child: new Text('Syncbase Echo'),
-                  onPressed: makeSetStateCallback(
-                      logic_croupier.CroupierState.PlayGame,
-                      logic_game.GameType.SyncbaseEcho))
+              new FlatButton(child: new Text('Solitaire'))
             ], direction: FlexDirection.vertical));
       case logic_croupier.CroupierState.AwaitGame:
         return null; // in which players wait for game invitations to arrive.
diff --git a/lib/components/draggable.dart b/lib/components/draggable.dart
index b7e6332..6e9c0b5 100644
--- a/lib/components/draggable.dart
+++ b/lib/components/draggable.dart
@@ -32,34 +32,31 @@
                 opacity: displacement != widgets.Offset.zero ? 0.5 : 1.0)));
   }
 
-  widgets.EventDisposition _startDrag(sky.PointerEvent event) {
+  void _startDrag(sky.PointerEvent event) {
     print("Drag Start");
     setState(() {
       dragController = new widgets.DragController(this.child);
       dragController.update(new widgets.Point(event.x, event.y));
       displacement = widgets.Offset.zero;
     });
-    return widgets.EventDisposition.consumed;
   }
 
-  widgets.EventDisposition _updateDrag(sky.PointerEvent event) {
+  void _updateDrag(sky.PointerEvent event) {
     setState(() {
       dragController.update(new widgets.Point(event.x, event.y));
       displacement += new widgets.Offset(event.dx, event.dy);
     });
-    return widgets.EventDisposition.consumed;
   }
 
-  widgets.EventDisposition _cancelDrag(sky.PointerEvent event) {
+  void _cancelDrag(sky.PointerEvent event) {
     print("Drag Cancel");
     setState(() {
       dragController.cancel();
       dragController = null;
     });
-    return widgets.EventDisposition.consumed;
   }
 
-  widgets.EventDisposition _drop(sky.PointerEvent event) {
+  void _drop(sky.PointerEvent event) {
     print("Drag Drop");
     setState(() {
       dragController.update(new widgets.Point(event.x, event.y));
@@ -68,6 +65,5 @@
 
       displacement = widgets.Offset.zero;
     });
-    return widgets.EventDisposition.consumed;
   }
 }
diff --git a/lib/components/game.dart b/lib/components/game.dart
index ecfaf40..a8ef6c8 100644
--- a/lib/components/game.dart
+++ b/lib/components/game.dart
@@ -5,13 +5,12 @@
 import '../logic/card.dart' as logic_card;
 import '../logic/game/game.dart' show Game, GameType;
 import '../logic/hearts/hearts.dart' show HeartsGame, HeartsPhase;
-import '../src/syncbase/syncbase_echo_impl.dart' show SyncbaseEchoImpl;
 //import 'board.dart' show Board;
 import 'card_collection.dart'
     show CardCollectionComponent, DropType, Orientation;
 
 import 'package:sky/widgets.dart';
-import 'package:sky/theme/colors.dart' as colors;
+import 'package:sky/material.dart' as material;
 
 abstract class GameComponent extends StatefulComponent {
   Game game;
@@ -45,14 +44,15 @@
   Widget build();
 }
 
-GameComponent createGameComponent(Game game, Function gameEndCallback, {double width, double height}) {
+GameComponent createGameComponent(Game game, Function gameEndCallback,
+    {double width, double height}) {
   switch (game.gameType) {
     case GameType.Proto:
-      return new ProtoGameComponent(game, gameEndCallback, width: width, height: height);
+      return new ProtoGameComponent(game, gameEndCallback,
+          width: width, height: height);
     case GameType.Hearts:
-      return new HeartsGameComponent(game, gameEndCallback, width: width, height: height);
-    case GameType.SyncbaseEcho:
-      return new SyncbaseEchoGameComponent(game, gameEndCallback);
+      return new HeartsGameComponent(game, gameEndCallback,
+          width: width, height: height);
     default:
       // We're probably not ready to serve the other games yet.
       assert(false);
@@ -61,7 +61,8 @@
 }
 
 class ProtoGameComponent extends GameComponent {
-  ProtoGameComponent(Game game, Function cb, {double width, double height}) : super(game, cb, width: width, height: height);
+  ProtoGameComponent(Game game, Function cb, {double width, double height})
+      : super(game, cb, width: width, height: height);
 
   Widget build() {
     List<Widget> cardCollections = new List<Widget>();
@@ -78,7 +79,7 @@
 
     cardCollections.add(new Container(
         decoration: new BoxDecoration(
-            backgroundColor: colors.Green[500], borderRadius: 5.0),
+            backgroundColor: material.Colors.green[500], borderRadius: 5.0),
         child: new CardCollectionComponent(game.cardCollections[4], true,
             Orientation.show1, _makeGameMoveCallback,
             dragChildren: true, acceptType: DropType.card, width: width)));
@@ -86,7 +87,8 @@
     cardCollections.add(_makeDebugButtons());
 
     return new Container(
-        decoration: new BoxDecoration(backgroundColor: colors.Pink[500]),
+        decoration:
+            new BoxDecoration(backgroundColor: material.Colors.pink[500]),
         child: new Flex(cardCollections, direction: FlexDirection.vertical));
   }
 
@@ -114,53 +116,33 @@
   }
 }
 
-class SyncbaseEchoGameComponent extends GameComponent {
-  SyncbaseEchoImpl s;
-
-  SyncbaseEchoGameComponent(Game game, Function cb) : super(game, cb);
-
-  Widget build() {
-    if (s == null) {
-      s = new SyncbaseEchoImpl(game);
-    }
-    return buildSyncbaseEcho();
-  }
-
-  Widget buildSyncbaseEcho() {
-    return new Container(
-        decoration:
-            const BoxDecoration(backgroundColor: const Color(0xFF00ACC1)),
-        child: new Flex([
-          new RaisedButton(child: new Text('doPutGet'), onPressed: s.doPutGet),
-          new Text('putStr: ${s.putStr}'),
-          new Text('getStr: ${s.getStr}'),
-          _makeButton('Quit', _quitGameCallback)
-        ], direction: FlexDirection.vertical));
-  }
-}
-
 class HeartsGameComponent extends GameComponent {
   List<logic_card.Card> passingCards1 = new List<logic_card.Card>();
   List<logic_card.Card> passingCards2 = new List<logic_card.Card>();
   List<logic_card.Card> passingCards3 = new List<logic_card.Card>();
 
-  HeartsGameComponent(Game game, Function cb, {double width, double height}) : super(game, cb, width: width, height: height);
+  HeartsGameComponent(Game game, Function cb, {double width, double height})
+      : super(game, cb, width: width, height: height);
   Widget build() {
     return new Container(
-      decoration: new BoxDecoration(
-        backgroundColor: colors.Grey[300]
-      ),
-      child: buildHearts()
-    );
+        decoration:
+            new BoxDecoration(backgroundColor: material.Colors.grey[300]),
+        child: buildHearts());
   }
 
   // Passing between the temporary pass list and the player's hand.
   // Does not actually move anything in game logic terms.
   void _uiPassCardCallback(logic_card.Card card, List<logic_card.Card> dest) {
     setState(() {
-      if (passingCards1.contains(card)) { passingCards1.remove(card); }
-      if (passingCards2.contains(card)) { passingCards2.remove(card); }
-      if (passingCards3.contains(card)) { passingCards3.remove(card); }
+      if (passingCards1.contains(card)) {
+        passingCards1.remove(card);
+      }
+      if (passingCards2.contains(card)) {
+        passingCards2.remove(card);
+      }
+      if (passingCards3.contains(card)) {
+        passingCards3.remove(card);
+      }
 
       if (dest == passingCards1 && passingCards1.length == 0) {
         passingCards1.add(card);
@@ -186,6 +168,7 @@
     passingCards2.clear();
     passingCards3.clear();
   }
+
   List<logic_card.Card> _combinePassing() {
     List<logic_card.Card> ls = new List<logic_card.Card>();
     ls.addAll(passingCards1);
@@ -246,8 +229,8 @@
   }
 
   Widget _makeDebugButtons() => new Container(
-    width: this.width,
-    child: new Flex([
+      width: this.width,
+      child: new Flex([
         new Flexible(flex: 1, child: new Text('P${game.playerNumber}')),
         new Flexible(
             flex: 5, child: _makeButton('Switch View', _switchPlayersCallback)),
@@ -257,24 +240,21 @@
         new Flexible(
             flex: 5, child: _makeButton('End Round', _endRoundDebugCallback)),
         new Flexible(flex: 4, child: _makeButton('Quit', _quitGameCallback))
-      ])
-  );
+      ]));
 
   Widget _makeButton(String text, Function callback, {bool inactive: false}) {
-    var borderColor = inactive ? colors.Grey[500] : colors.white;
-    var backgroundColor = inactive ? colors.Grey[500] : null;
+    var borderColor =
+        inactive ? material.Colors.grey[500] : material.Colors.white;
+    var backgroundColor = inactive ? material.Colors.grey[500] : null;
     return new FlatButton(
-      child: new Container(
-        decoration: new BoxDecoration(
-          border: new Border.all(width: 1.0, color: borderColor),
-          backgroundColor: backgroundColor
-        ),
-        padding: new EdgeDims.all(10.0),
-        child: new Text(text)
-      ),
-      enabled: !inactive,
-      onPressed: inactive ? null : callback
-    );
+        child: new Container(
+            decoration: new BoxDecoration(
+                border: new Border.all(width: 1.0, color: borderColor),
+                backgroundColor: backgroundColor),
+            padding: new EdgeDims.all(10.0),
+            child: new Text(text)),
+        enabled: !inactive,
+        onPressed: inactive ? null : callback);
   }
 
   Widget buildHearts() {
@@ -305,55 +285,55 @@
     List<Widget> plays = new List<Widget>();
     for (int i = 0; i < 4; i++) {
       plays.add(new CardCollectionComponent(
-        game.cardCollections[i + HeartsGame.OFFSET_PLAY],
-        true,
-        Orientation.show1,
-        _makeGameMoveCallback,
-        width: width
-      ));
+          game.cardCollections[i + HeartsGame.OFFSET_PLAY],
+          true,
+          Orientation.show1,
+          _makeGameMoveCallback,
+          width: width));
     }
     cardCollections.add(new Container(
-      decoration: new BoxDecoration(
-        backgroundColor: colors.Teal[600]
-      ),
-      width: this.width,
-      child: new Flex(plays, justifyContent: FlexJustifyContent.spaceAround)
-    ));
-
+        decoration:
+            new BoxDecoration(backgroundColor: material.Colors.teal[600]),
+        width: this.width,
+        child:
+            new Flex(plays, justifyContent: FlexJustifyContent.spaceAround)));
 
     int p = game.playerNumber;
 
     Widget playArea = new Container(
-      decoration: new BoxDecoration(
-        backgroundColor: colors.Teal[500]
-      ),
-      width: this.width,
-      child: new Center(
-        child: new CardCollectionComponent(
-          game.cardCollections[p + HeartsGame.OFFSET_PLAY],
-          true,
-          Orientation.show1,
-          _makeGameMoveCallback,
-          acceptType: p == game.whoseTurn ? DropType.card : DropType.none,
-          width: width,
-          backgroundColor: p == game.whoseTurn ? colors.white : colors.Grey[500],
-          altColor: p == game.whoseTurn ? colors.Grey[200] : colors.Grey[600]
-        )
-      )
-    );
+        decoration:
+            new BoxDecoration(backgroundColor: material.Colors.teal[500]),
+        width: this.width,
+        child: new Center(
+            child: new CardCollectionComponent(
+                game.cardCollections[p + HeartsGame.OFFSET_PLAY],
+                true,
+                Orientation.show1,
+                _makeGameMoveCallback,
+                acceptType: p == game.whoseTurn ? DropType.card : DropType.none,
+                width: width,
+                backgroundColor: p == game.whoseTurn
+                    ? material.Colors.white
+                    : material.Colors.grey[500],
+                altColor: p == game.whoseTurn
+                    ? material.Colors.grey[200]
+                    : material.Colors.grey[600])));
     cardCollections.add(playArea);
 
     List<logic_card.Card> cards = game.cardCollections[p];
-    CardCollectionComponent c = new CardCollectionComponent(cards,
-        game.playerNumber == p, Orientation.suit, _makeGameMoveCallback,
-        dragChildren: game.whoseTurn == p, comparator: _compareCards, width: width);
+    CardCollectionComponent c = new CardCollectionComponent(
+        cards, game.playerNumber == p, Orientation.suit, _makeGameMoveCallback,
+        dragChildren: game.whoseTurn == p,
+        comparator: _compareCards,
+        width: width);
     cardCollections.add(c); // flex
 
     cardCollections.add(new Text("Player ${game.whoseTurn}'s turn"));
     cardCollections.add(new Text(game.debugString));
     cardCollections.add(_makeDebugButtons());
 
-    return new Column(cardCollections, justifyContent: FlexJustifyContent.spaceBetween);
+    return new Column(cardCollections,
+        justifyContent: FlexJustifyContent.spaceBetween);
   }
 
   Widget showScore() {
@@ -369,7 +349,8 @@
     }
 
     return new Container(
-        decoration: new BoxDecoration(backgroundColor: colors.Pink[500]),
+        decoration:
+            new BoxDecoration(backgroundColor: material.Colors.pink[500]),
         child: new Flex([
           new Text('Player ${game.playerNumber}'),
           // TODO(alexfandrianto): we want to show round by round, deltas too, don't we?
@@ -384,12 +365,15 @@
     HeartsGame game = this.game as HeartsGame;
 
     return new Container(
-        decoration: new BoxDecoration(backgroundColor: colors.Pink[500]),
+        decoration:
+            new BoxDecoration(backgroundColor: material.Colors.pink[500]),
         child: new Flex([
           new Text('Player ${game.playerNumber}'),
           _makeButton('Deal', game.dealCards),
           _makeDebugButtons()
-        ], direction: FlexDirection.vertical, justifyContent: FlexJustifyContent.spaceBetween));
+        ],
+            direction: FlexDirection.vertical,
+            justifyContent: FlexJustifyContent.spaceBetween));
   }
 
   // the pass phase screen consists of 2 parts:
@@ -404,9 +388,9 @@
     List<logic_card.Card> playerCards = game.cardCollections[game.playerNumber];
     List<logic_card.Card> remainingCards = new List<logic_card.Card>();
     playerCards.forEach((logic_card.Card c) {
-      if (!passingCards1.contains(c) && !passingCards2.contains(c) &&
-        !passingCards3.contains(c)) {
-
+      if (!passingCards1.contains(c) &&
+          !passingCards2.contains(c) &&
+          !passingCards3.contains(c)) {
         remainingCards.add(c);
       }
     });
@@ -416,42 +400,50 @@
     // Luckily, later passes shouldn't do anything.
 
     List<Widget> passingCardWidgets = <Widget>[
-      new Container(margin: new EdgeDims.all(10.0), child: new CardCollectionComponent(
-          passingCards1, true, Orientation.show1, _uiPassCardCallback,
-          dragChildren: !hasPassed, acceptType: DropType.card,
-          backgroundColor: colors.white, altColor: colors.Grey[200])),
-      new Container(margin: new EdgeDims.all(10.0), child: new CardCollectionComponent(
-          passingCards2, true, Orientation.show1, _uiPassCardCallback,
-          dragChildren: !hasPassed, acceptType: DropType.card,
-          backgroundColor: colors.white, altColor: colors.Grey[200])),
-      new Container(margin: new EdgeDims.all(10.0), child: new CardCollectionComponent(
-          passingCards3, true, Orientation.show1, _uiPassCardCallback,
-          dragChildren: !hasPassed, acceptType: DropType.card,
-          backgroundColor: colors.white, altColor: colors.Grey[200]))
+      new Container(
+          margin: new EdgeDims.all(10.0),
+          child: new CardCollectionComponent(
+              passingCards1, true, Orientation.show1, _uiPassCardCallback,
+              dragChildren: !hasPassed,
+              acceptType: DropType.card,
+              backgroundColor: material.Colors.white,
+              altColor: material.Colors.grey[200])),
+      new Container(
+          margin: new EdgeDims.all(10.0),
+          child: new CardCollectionComponent(
+              passingCards2, true, Orientation.show1, _uiPassCardCallback,
+              dragChildren: !hasPassed,
+              acceptType: DropType.card,
+              backgroundColor: material.Colors.white,
+              altColor: material.Colors.grey[200])),
+      new Container(
+          margin: new EdgeDims.all(10.0),
+          child: new CardCollectionComponent(
+              passingCards3, true, Orientation.show1, _uiPassCardCallback,
+              dragChildren: !hasPassed,
+              acceptType: DropType.card,
+              backgroundColor: material.Colors.white,
+              altColor: material.Colors.grey[200]))
     ];
     Widget passArea;
     if (hasPassed) {
       passArea = new Container(
-        decoration: new BoxDecoration(
-          backgroundColor: colors.Teal[600]
-        ),
-        width: this.width,
-        child: new Flex(
-          passingCardWidgets..add(_makeButton("Pass", null, inactive: true)),
-          justifyContent: FlexJustifyContent.spaceBetween
-        )
-      );
+          decoration:
+              new BoxDecoration(backgroundColor: material.Colors.teal[600]),
+          width: this.width,
+          child: new Flex(
+              passingCardWidgets
+                ..add(_makeButton("Pass", null, inactive: true)),
+              justifyContent: FlexJustifyContent.spaceBetween));
     } else {
       passArea = new Container(
-        decoration: new BoxDecoration(
-          backgroundColor: colors.Teal[500]
-        ),
-        width: this.width,
-        child: new Flex(
-          passingCardWidgets..add(_makeButton("Pass", _makeGamePassCallback)),
-          justifyContent: FlexJustifyContent.spaceBetween
-        )
-      );
+          decoration:
+              new BoxDecoration(backgroundColor: material.Colors.teal[500]),
+          width: this.width,
+          child: new Flex(
+              passingCardWidgets
+                ..add(_makeButton("Pass", _makeGamePassCallback)),
+              justifyContent: FlexJustifyContent.spaceBetween));
     }
 
     // Return the pass cards and the player's remaining hand.
@@ -460,8 +452,12 @@
       passArea,
       new CardCollectionComponent(
           remainingCards, true, Orientation.suit, _uiPassCardCallback,
-          dragChildren: !hasPassed, acceptType: DropType.card, comparator: _compareCards, width: width,
-          backgroundColor: colors.Grey[500], altColor: colors.Grey[700]),
+          dragChildren: !hasPassed,
+          acceptType: DropType.card,
+          comparator: _compareCards,
+          width: width,
+          backgroundColor: material.Colors.grey[500],
+          altColor: material.Colors.grey[700]),
       new Text(game.debugString),
       _makeDebugButtons()
     ], justifyContent: FlexJustifyContent.spaceBetween);
@@ -476,54 +472,61 @@
 
     bool hasTaken = takeCards.length == 0;
 
-    List<logic_card.Card> take1 = takeCards.length != 0 ? takeCards.sublist(0, 1) : [];
-    List<logic_card.Card> take2 = takeCards.length != 0 ? takeCards.sublist(1, 2) : [];
-    List<logic_card.Card> take3 = takeCards.length != 0 ? takeCards.sublist(2, 3) : [];
+    List<logic_card.Card> take1 =
+        takeCards.length != 0 ? takeCards.sublist(0, 1) : [];
+    List<logic_card.Card> take2 =
+        takeCards.length != 0 ? takeCards.sublist(1, 2) : [];
+    List<logic_card.Card> take3 =
+        takeCards.length != 0 ? takeCards.sublist(2, 3) : [];
 
     List<Widget> takeCardWidgets = <Widget>[
-      new Container(margin: new EdgeDims.all(10.0), child: new CardCollectionComponent(
-          take1, true, Orientation.show1, null,
-          backgroundColor: colors.white, altColor: colors.Grey[200])),
-      new Container(margin: new EdgeDims.all(10.0), child: new CardCollectionComponent(
-          take2, true, Orientation.show1, null,
-          backgroundColor: colors.white, altColor: colors.Grey[200])),
-      new Container(margin: new EdgeDims.all(10.0), child: new CardCollectionComponent(
-          take3, true, Orientation.show1, null,
-          backgroundColor: colors.white, altColor: colors.Grey[200]))
+      new Container(
+          margin: new EdgeDims.all(10.0),
+          child: new CardCollectionComponent(
+              take1, true, Orientation.show1, null,
+              backgroundColor: material.Colors.white,
+              altColor: material.Colors.grey[200])),
+      new Container(
+          margin: new EdgeDims.all(10.0),
+          child: new CardCollectionComponent(
+              take2, true, Orientation.show1, null,
+              backgroundColor: material.Colors.white,
+              altColor: material.Colors.grey[200])),
+      new Container(
+          margin: new EdgeDims.all(10.0),
+          child: new CardCollectionComponent(
+              take3, true, Orientation.show1, null,
+              backgroundColor: material.Colors.white,
+              altColor: material.Colors.grey[200]))
     ];
     Widget takeArea;
     if (hasTaken) {
       takeArea = new Container(
-        decoration: new BoxDecoration(
-          backgroundColor: colors.Teal[600]
-        ),
-        width: this.width,
-        child: new Flex(
-          takeCardWidgets..add(_makeButton("Take", null, inactive: true)),
-          justifyContent: FlexJustifyContent.spaceBetween
-        )
-      );
+          decoration:
+              new BoxDecoration(backgroundColor: material.Colors.teal[600]),
+          width: this.width,
+          child: new Flex(
+              takeCardWidgets..add(_makeButton("Take", null, inactive: true)),
+              justifyContent: FlexJustifyContent.spaceBetween));
     } else {
       takeArea = new Container(
-        decoration: new BoxDecoration(
-          backgroundColor: colors.Teal[500]
-        ),
-        width: this.width,
-        child: new Flex(
-          takeCardWidgets..add(_makeButton("Take", _makeGameTakeCallback)),
-          justifyContent: FlexJustifyContent.spaceBetween
-        )
-      );
+          decoration:
+              new BoxDecoration(backgroundColor: material.Colors.teal[500]),
+          width: this.width,
+          child: new Flex(
+              takeCardWidgets..add(_makeButton("Take", _makeGameTakeCallback)),
+              justifyContent: FlexJustifyContent.spaceBetween));
     }
 
     // Return the passsed cards and the player's hand.
     // (Also includes debug info)
     return new Column(<Widget>[
       takeArea,
-      new CardCollectionComponent(
-          playerCards, true, Orientation.suit, null,
-          comparator: _compareCards, width: width,
-          backgroundColor: colors.Grey[500], altColor: colors.Grey[700]),
+      new CardCollectionComponent(playerCards, true, Orientation.suit, null,
+          comparator: _compareCards,
+          width: width,
+          backgroundColor: material.Colors.grey[500],
+          altColor: material.Colors.grey[700]),
       new Text(game.debugString),
       _makeDebugButtons()
     ], justifyContent: FlexJustifyContent.spaceBetween);
diff --git a/lib/components/util.dart b/lib/components/util.dart
index 49ff66a..ba9ca2c 100644
--- a/lib/components/util.dart
+++ b/lib/components/util.dart
@@ -6,7 +6,6 @@
 
 List<Widget> flexChildren(List<Widget> children) {
   List<Widget> flexWidgets = new List<Widget>();
-  children.forEach(
-      (child) => flexWidgets.add(new Flexible(child: child)));
+  children.forEach((child) => flexWidgets.add(new Flexible(child: child)));
   return flexWidgets;
 }
diff --git a/lib/logic/create_game.dart b/lib/logic/create_game.dart
index c0a921e..1c3f0d6 100644
--- a/lib/logic/create_game.dart
+++ b/lib/logic/create_game.dart
@@ -5,7 +5,6 @@
 import 'game/game.dart' as game_impl;
 import 'hearts/hearts.dart' as hearts_impl;
 import 'proto/proto.dart' as proto_impl;
-import 'syncbase_echo.dart' show SyncbaseEcho;
 
 game_impl.Game createGame(game_impl.GameType gt, int pn) {
   switch (gt) {
@@ -13,10 +12,8 @@
       return new proto_impl.ProtoGame(pn);
     case game_impl.GameType.Hearts:
       return new hearts_impl.HeartsGame(pn);
-    case game_impl.GameType.SyncbaseEcho:
-      return new SyncbaseEcho();
     default:
       assert(false);
       return null;
   }
-}
\ No newline at end of file
+}
diff --git a/lib/logic/game/game.dart b/lib/logic/game/game.dart
index e7ab9df..ff17c92 100644
--- a/lib/logic/game/game.dart
+++ b/lib/logic/game/game.dart
@@ -9,4 +9,4 @@
 
 part 'game_def.part.dart';
 part 'game_command.part.dart';
-part 'game_log.part.dart';
\ No newline at end of file
+part 'game_log.part.dart';
diff --git a/lib/logic/game/game_def.part.dart b/lib/logic/game/game_def.part.dart
index 289b1cc..72e286c 100644
--- a/lib/logic/game/game_def.part.dart
+++ b/lib/logic/game/game_def.part.dart
@@ -7,7 +7,7 @@
 // Note: Proto and Board are "fake" games intended to demonstrate what we can do.
 // Proto is just a drag cards around "game".
 // Board is meant to show how one _could_ layout a game of Hearts. This one is not hooked up very well yet.
-enum GameType { Proto, Hearts, Poker, Solitaire, Board, SyncbaseEcho }
+enum GameType { Proto, Hearts, Poker, Solitaire, Board }
 
 /// A game consists of multiple decks and tracks a single deck of cards.
 /// It also handles events; when cards are dragged to and from decks.
@@ -68,4 +68,4 @@
 
   // UNIMPLEMENTED: Override this to implement game-specific logic after each event.
   void triggerEvents() {}
-}
\ No newline at end of file
+}
diff --git a/lib/logic/hearts/hearts.dart b/lib/logic/hearts/hearts.dart
index a4d1163..b2c5dde 100644
--- a/lib/logic/hearts/hearts.dart
+++ b/lib/logic/hearts/hearts.dart
@@ -12,4 +12,4 @@
 part 'hearts_command.part.dart';
 part 'hearts_game.part.dart';
 part 'hearts_log.part.dart';
-part 'hearts_phase.part.dart';
\ No newline at end of file
+part 'hearts_phase.part.dart';
diff --git a/lib/logic/proto/proto.dart b/lib/logic/proto/proto.dart
index 0213bf5..f12361f 100644
--- a/lib/logic/proto/proto.dart
+++ b/lib/logic/proto/proto.dart
@@ -9,4 +9,4 @@
 
 part 'proto_command.part.dart';
 part 'proto_game.part.dart';
-part 'proto_log.part.dart';
\ No newline at end of file
+part 'proto_log.part.dart';
diff --git a/lib/logic/syncbase_echo.dart b/lib/logic/syncbase_echo.dart
deleted file mode 100644
index 406eb12..0000000
--- a/lib/logic/syncbase_echo.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2015 The Vanadium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-import 'game/game.dart' show Game, GameType, GameLog, GameCommand;
-
-class SyncbaseEcho extends Game {
-  SyncbaseEcho() : super.dummy(GameType.SyncbaseEcho, new SyncbaseEchoLog());
-}
-
-class SyncbaseEchoLog extends GameLog {
-  void addToLogCb(List<GameCommand> log, GameCommand newCommand) {
-    update(new List<GameCommand>.from(log)..add(newCommand));
-  }
-
-  List<GameCommand> updateLogCb(
-      List<GameCommand> current, List<GameCommand> other, int mismatchIndex) {
-    assert(false); // This game can't have conflicts.
-    return current;
-  }
-}
diff --git a/lib/src/syncbase/log_writer.dart b/lib/src/syncbase/log_writer.dart
index 3c11406..5f02ce9 100644
--- a/lib/src/syncbase/log_writer.dart
+++ b/lib/src/syncbase/log_writer.dart
@@ -26,7 +26,7 @@
 import 'dart:async';
 import 'dart:convert' show UTF8, JSON;
 
-import 'package:sky/mojo/embedder.dart' show embedder;
+import 'package:sky/services.dart' show embedder;
 
 import 'package:ether/syncbase_client.dart'
     show Perms, SyncbaseClient, SyncbaseTable;
diff --git a/lib/src/syncbase/syncbase_echo_impl.dart b/lib/src/syncbase/syncbase_echo_impl.dart
deleted file mode 100644
index bd25ae2..0000000
--- a/lib/src/syncbase/syncbase_echo_impl.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2015 The Vanadium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:convert' show UTF8;
-
-import '../../logic/game/game.dart' show Game;
-
-import 'package:sky/mojo/embedder.dart' show embedder;
-
-import 'package:ether/syncbase_client.dart'
-    show Perms, SyncbaseClient, SyncbaseTable;
-
-log(String msg) {
-  DateTime now = new DateTime.now();
-  print('$now $msg');
-}
-
-Perms emptyPerms() => new Perms()..json = '{}';
-
-class SyncbaseEchoImpl {
-  final SyncbaseClient _syncbaseClient;
-  final Game game;
-
-  SyncbaseEchoImpl(this.game)
-      : _syncbaseClient = new SyncbaseClient(embedder.connectToService,
-            'https://mojo.v.io/syncbase_server.mojo');
-
-  int seq = 0;
-  SyncbaseTable tb;
-  String sendMsg, recvMsg, putStr, getStr;
-
-  Future doSyncbaseInit() async {
-    log('DemoApp.doSyncbaseInit');
-    if (tb != null) {
-      log('syncbase already initialized');
-      return;
-    }
-    var app = _syncbaseClient.app('app');
-    if (!(await app.exists())) {
-      await app.create(emptyPerms());
-    }
-    var db = app.noSqlDatabase('db');
-    if (!(await db.exists())) {
-      await db.create(emptyPerms());
-    }
-    var table = db.table('table');
-    if (!(await table.exists())) {
-      await table.create(emptyPerms());
-    }
-    tb = table;
-    log('syncbase is now initialized');
-  }
-
-  Future doPutGet() async {
-    log('DemoApp.doPutGet');
-    await doSyncbaseInit();
-
-    putStr = seq.toString();
-    getStr = '';
-    seq++;
-    log('setState putStr done');
-
-    // TODO(sadovsky): Switch to tb.put/get once they exist.
-    var row = tb.row('key');
-    await row.put(UTF8.encode(putStr));
-    var getBytes = await row.get();
-
-    getStr = UTF8.decode(getBytes);
-    log('setState getStr done');
-
-    game.updateCallback(); // tell the UI to set/update state.
-  }
-}
diff --git a/manifest.yaml b/manifest.yaml
new file mode 100644
index 0000000..ff79910
--- /dev/null
+++ b/manifest.yaml
@@ -0,0 +1,216 @@
+assets:
+  - images/default/classic/down/c10.png
+  - images/default/classic/down/c1.png
+  - images/default/classic/down/c2.png
+  - images/default/classic/down/c3.png
+  - images/default/classic/down/c4.png
+  - images/default/classic/down/c5.png
+  - images/default/classic/down/c6.png
+  - images/default/classic/down/c7.png
+  - images/default/classic/down/c8.png
+  - images/default/classic/down/c9.png
+  - images/default/classic/down/cj.png
+  - images/default/classic/down/ck.png
+  - images/default/classic/down/cq.png
+  - images/default/classic/down/d10.png
+  - images/default/classic/down/d1.png
+  - images/default/classic/down/d2.png
+  - images/default/classic/down/d3.png
+  - images/default/classic/down/d4.png
+  - images/default/classic/down/d5.png
+  - images/default/classic/down/d6.png
+  - images/default/classic/down/d7.png
+  - images/default/classic/down/d8.png
+  - images/default/classic/down/d9.png
+  - images/default/classic/down/dj.png
+  - images/default/classic/down/dk.png
+  - images/default/classic/down/dq.png
+  - images/default/classic/down/h10.png
+  - images/default/classic/down/h1.png
+  - images/default/classic/down/h2.png
+  - images/default/classic/down/h3.png
+  - images/default/classic/down/h4.png
+  - images/default/classic/down/h5.png
+  - images/default/classic/down/h6.png
+  - images/default/classic/down/h7.png
+  - images/default/classic/down/h8.png
+  - images/default/classic/down/h9.png
+  - images/default/classic/down/hj.png
+  - images/default/classic/down/hk.png
+  - images/default/classic/down/hq.png
+  - images/default/classic/down/s10.png
+  - images/default/classic/down/s1.png
+  - images/default/classic/down/s2.png
+  - images/default/classic/down/s3.png
+  - images/default/classic/down/s4.png
+  - images/default/classic/down/s5.png
+  - images/default/classic/down/s6.png
+  - images/default/classic/down/s7.png
+  - images/default/classic/down/s8.png
+  - images/default/classic/down/s9.png
+  - images/default/classic/down/sj.png
+  - images/default/classic/down/sk.png
+  - images/default/classic/down/sq.png
+  - images/default/classic/up/c10.png
+  - images/default/classic/up/c1.png
+  - images/default/classic/up/c2.png
+  - images/default/classic/up/c3.png
+  - images/default/classic/up/c4.png
+  - images/default/classic/up/c5.png
+  - images/default/classic/up/c6.png
+  - images/default/classic/up/c7.png
+  - images/default/classic/up/c8.png
+  - images/default/classic/up/c9.png
+  - images/default/classic/up/cj.png
+  - images/default/classic/up/ck.png
+  - images/default/classic/up/cq.png
+  - images/default/classic/up/d10.png
+  - images/default/classic/up/d1.png
+  - images/default/classic/up/d2.png
+  - images/default/classic/up/d3.png
+  - images/default/classic/up/d4.png
+  - images/default/classic/up/d5.png
+  - images/default/classic/up/d6.png
+  - images/default/classic/up/d7.png
+  - images/default/classic/up/d8.png
+  - images/default/classic/up/d9.png
+  - images/default/classic/up/dj.png
+  - images/default/classic/up/dk.png
+  - images/default/classic/up/dq.png
+  - images/default/classic/up/h10.png
+  - images/default/classic/up/h1.png
+  - images/default/classic/up/h2.png
+  - images/default/classic/up/h3.png
+  - images/default/classic/up/h4.png
+  - images/default/classic/up/h5.png
+  - images/default/classic/up/h6.png
+  - images/default/classic/up/h7.png
+  - images/default/classic/up/h8.png
+  - images/default/classic/up/h9.png
+  - images/default/classic/up/hj.png
+  - images/default/classic/up/hk.png
+  - images/default/classic/up/hq.png
+  - images/default/classic/up/s10.png
+  - images/default/classic/up/s1.png
+  - images/default/classic/up/s2.png
+  - images/default/classic/up/s3.png
+  - images/default/classic/up/s4.png
+  - images/default/classic/up/s5.png
+  - images/default/classic/up/s6.png
+  - images/default/classic/up/s7.png
+  - images/default/classic/up/s8.png
+  - images/default/classic/up/s9.png
+  - images/default/classic/up/sj.png
+  - images/default/classic/up/sk.png
+  - images/default/classic/up/sq.png
+  - images/redback/classic/down/c10.png
+  - images/redback/classic/down/c1.png
+  - images/redback/classic/down/c2.png
+  - images/redback/classic/down/c3.png
+  - images/redback/classic/down/c4.png
+  - images/redback/classic/down/c5.png
+  - images/redback/classic/down/c6.png
+  - images/redback/classic/down/c7.png
+  - images/redback/classic/down/c8.png
+  - images/redback/classic/down/c9.png
+  - images/redback/classic/down/cj.png
+  - images/redback/classic/down/ck.png
+  - images/redback/classic/down/cq.png
+  - images/redback/classic/down/d10.png
+  - images/redback/classic/down/d1.png
+  - images/redback/classic/down/d2.png
+  - images/redback/classic/down/d3.png
+  - images/redback/classic/down/d4.png
+  - images/redback/classic/down/d5.png
+  - images/redback/classic/down/d6.png
+  - images/redback/classic/down/d7.png
+  - images/redback/classic/down/d8.png
+  - images/redback/classic/down/d9.png
+  - images/redback/classic/down/dj.png
+  - images/redback/classic/down/dk.png
+  - images/redback/classic/down/dq.png
+  - images/redback/classic/down/h10.png
+  - images/redback/classic/down/h1.png
+  - images/redback/classic/down/h2.png
+  - images/redback/classic/down/h3.png
+  - images/redback/classic/down/h4.png
+  - images/redback/classic/down/h5.png
+  - images/redback/classic/down/h6.png
+  - images/redback/classic/down/h7.png
+  - images/redback/classic/down/h8.png
+  - images/redback/classic/down/h9.png
+  - images/redback/classic/down/hj.png
+  - images/redback/classic/down/hk.png
+  - images/redback/classic/down/hq.png
+  - images/redback/classic/down/s10.png
+  - images/redback/classic/down/s1.png
+  - images/redback/classic/down/s2.png
+  - images/redback/classic/down/s3.png
+  - images/redback/classic/down/s4.png
+  - images/redback/classic/down/s5.png
+  - images/redback/classic/down/s6.png
+  - images/redback/classic/down/s7.png
+  - images/redback/classic/down/s8.png
+  - images/redback/classic/down/s9.png
+  - images/redback/classic/down/sj.png
+  - images/redback/classic/down/sk.png
+  - images/redback/classic/down/sq.png
+  - images/redback/classic/up/c10.png
+  - images/redback/classic/up/c1.png
+  - images/redback/classic/up/c2.png
+  - images/redback/classic/up/c3.png
+  - images/redback/classic/up/c4.png
+  - images/redback/classic/up/c5.png
+  - images/redback/classic/up/c6.png
+  - images/redback/classic/up/c7.png
+  - images/redback/classic/up/c8.png
+  - images/redback/classic/up/c9.png
+  - images/redback/classic/up/cj.png
+  - images/redback/classic/up/ck.png
+  - images/redback/classic/up/cq.png
+  - images/redback/classic/up/d10.png
+  - images/redback/classic/up/d1.png
+  - images/redback/classic/up/d2.png
+  - images/redback/classic/up/d3.png
+  - images/redback/classic/up/d4.png
+  - images/redback/classic/up/d5.png
+  - images/redback/classic/up/d6.png
+  - images/redback/classic/up/d7.png
+  - images/redback/classic/up/d8.png
+  - images/redback/classic/up/d9.png
+  - images/redback/classic/up/dj.png
+  - images/redback/classic/up/dk.png
+  - images/redback/classic/up/dq.png
+  - images/redback/classic/up/ec.png
+  - images/redback/classic/up/h10.png
+  - images/redback/classic/up/h1.png
+  - images/redback/classic/up/h2.png
+  - images/redback/classic/up/h3.png
+  - images/redback/classic/up/h4.png
+  - images/redback/classic/up/h5.png
+  - images/redback/classic/up/h6.png
+  - images/redback/classic/up/h7.png
+  - images/redback/classic/up/h8.png
+  - images/redback/classic/up/h9.png
+  - images/redback/classic/up/hj.png
+  - images/redback/classic/up/hk.png
+  - images/redback/classic/up/hq.png
+  - images/redback/classic/up/jb.png
+  - images/redback/classic/up/jr.png
+  - images/redback/classic/up/s10.png
+  - images/redback/classic/up/s1.png
+  - images/redback/classic/up/s2.png
+  - images/redback/classic/up/s3.png
+  - images/redback/classic/up/s4.png
+  - images/redback/classic/up/s5.png
+  - images/redback/classic/up/s6.png
+  - images/redback/classic/up/s7.png
+  - images/redback/classic/up/s8.png
+  - images/redback/classic/up/s9.png
+  - images/redback/classic/up/sj.png
+  - images/redback/classic/up/sk.png
+  - images/redback/classic/up/sq.png
+  - images/suits/Club.png
+  - images/suits/Diamond.png
+  - images/suits/Heart.png
+  - images/suits/Spade.png
diff --git a/mojoconfig b/mojoconfig
index 23a16b5..7a82085 100644
--- a/mojoconfig
+++ b/mojoconfig
@@ -19,7 +19,7 @@
       'host': 'https://mojo.v.io/',
       'mappings': [
         ('', [
-          # For echo_server.mojo and syncbase_server.mojo.
+          # For syncbase_server.mojo.
           '@{ETHER_BUILD_DIR}',
         ]),
       ],
diff --git a/pubspec.yaml b/pubspec.yaml
index 8a9341d..1db36cc 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,11 +1,9 @@
 name: your_app_name
 dependencies:
-  sky: 0.0.41
-  sky_tools: any
-  sky_engine: 0.0.18
-  sky_services: 0.0.18
+  sky: 0.0.48
+  sky_tools: 0.0.14
   test: any
   ether: any
 dependency_overrides:
   ether:
-    path: ../../mojo/syncbase/dart
\ No newline at end of file
+    path: ../../mojo/syncbase/dart