diff --git a/.gitignore b/.gitignore
index 6b4c411..560f78b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,5 @@
 *.ta
 cscope.*
 out/
+hello_world/host/optee_example_hello_world
+random/host/optee_example_random
diff --git a/Makefile b/Makefile
index 4d29a41..9fb6b46 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,9 @@
-export V?=0
+export V ?= 0
 
 OUTPUT_DIR := $(CURDIR)/out
-EXAMPLE_LIST := hello_world random
+
+EXAMPLE_LIST := hello_world
+EXAMPLE_LIST += random
 
 .PHONY: all
 all: examples prepare-for-rootfs
@@ -10,27 +12,28 @@
 clean: examples-clean prepare-for-rootfs-clean
 
 examples:
-	for example in $(EXAMPLE_LIST); do \
+	@for example in $(EXAMPLE_LIST); do \
 		$(MAKE) -C $$example CROSS_COMPILE="$(HOST_CROSS_COMPILE)"; \
 	done
 
 examples-clean:
-	for example in $(EXAMPLE_LIST); do \
+	@for example in $(EXAMPLE_LIST); do \
 		$(MAKE) -C $$example clean; \
 	done
 
 prepare-for-rootfs: examples
-	echo "Copying example CA and TA binaries to $(OUTPUT_DIR)..."
+	@echo "Copying example CA and TA binaries to $(OUTPUT_DIR)..."
 	@mkdir -p $(OUTPUT_DIR)
 	@mkdir -p $(OUTPUT_DIR)/ta
 	@mkdir -p $(OUTPUT_DIR)/ca
 	@for example in $(EXAMPLE_LIST); do \
-		if [ -e $$example/host/optee_$$example ]; then \
-			cp -p $$example/host/optee_$$example $(OUTPUT_DIR)/ca/; \
+		if [ -e $$example/host/optee_example_$$example ]; then \
+			cp -p $$example/host/optee_example_$$example $(OUTPUT_DIR)/ca/; \
 		fi; \
 		cp -pr $$example/ta/*.ta $(OUTPUT_DIR)/ta/; \
 	done
 
 prepare-for-rootfs-clean:
-	rm -rf $(OUTPUT_DIR)/ta/*
-	rm -rf $(OUTPUT_DIR)/ca/*
+	@rm -rf $(OUTPUT_DIR)/ta
+	@rm -rf $(OUTPUT_DIR)/ca
+	@rmdir --ignore-fail-on-non-empty $(OUTPUT_DIR) || test ! -e $(OUTPUT_DIR)
diff --git a/README.md b/README.md
index 15b29b5..7d83de1 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,19 @@
 This document describes the sample applications that are included in the OP-TEE,
 that aim to showcase specific functionality and use case.
 
+For sake of simplicity, all OP-TEE example test application are prefixed with
+`optee_example_`.
+
 ---
 ## 2. List of sample applications
-* **hello_world**: use Trusted Application for incrementing an integer value
-* **random**: generate random UUID using capabilities of TEE API
-(`TEE_GenerateRandom()`)
+
+Directory **hello_world/**:
+* A very simple Trusted Application to answer a hello command and incrementing
+an integer value.
+* Test application: `optee_example_hello_world`
+* Trusted application UUID: 8aaaf200-2450-11e4-abe2-0002a5d5c51b
+
+Directory **random/**:
+* Generates a random UUID using capabilities of TEE API (`TEE_GenerateRandom()`).
+* Test application: `optee_example_random`
+* Trusted application UUID: b6c53aba-9669-4668-a7f2-205629d00f86
diff --git a/hello_world/Android.mk b/hello_world/Android.mk
index 5c019b3..ff7e7c1 100644
--- a/hello_world/Android.mk
+++ b/hello_world/Android.mk
@@ -13,7 +13,7 @@
 		$(OPTEE_CLIENT_EXPORT)/include \
 
 LOCAL_SHARED_LIBRARIES := libteec
-LOCAL_MODULE := tee_example_helloworld
+LOCAL_MODULE := optee_example_hello_world
 LOCAL_MODULE_TAGS := optional
 include $(BUILD_EXECUTABLE)
 
diff --git a/hello_world/host/Makefile b/hello_world/host/Makefile
index 17f14fe..a4099ef 100644
--- a/hello_world/host/Makefile
+++ b/hello_world/host/Makefile
@@ -12,7 +12,7 @@
 #Add/link other required libraries here
 LDADD += -lteec -L$(TEEC_EXPORT)/lib
 
-BINARY = optee_hello_world
+BINARY = optee_example_hello_world
 
 .PHONY: all
 all: $(BINARY)
diff --git a/hello_world/ta/hello_world_ta.c b/hello_world/ta/hello_world_ta.c
index 4aeacca..2423b30 100644
--- a/hello_world/ta/hello_world_ta.c
+++ b/hello_world/ta/hello_world_ta.c
@@ -25,12 +25,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define STR_TRACE_USER_TA "HELLO_WORLD"
-
 #include <tee_internal_api.h>
 #include <tee_internal_api_extensions.h>
 
-#include "hello_world_ta.h"
+#include <hello_world_ta.h>
 
 /*
  * Called when the instance of the TA is created. This is the first call in
diff --git a/hello_world/ta/include/hello_world_ta.h b/hello_world/ta/include/hello_world_ta.h
index a25d0a4..8e40276 100644
--- a/hello_world/ta/include/hello_world_ta.h
+++ b/hello_world/ta/include/hello_world_ta.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Linaro Limited
+ * Copyright (c) 2016-2017, Linaro Limited
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,13 +27,17 @@
 #ifndef TA_HELLO_WORLD_H
 #define TA_HELLO_WORLD_H
 
-/* This UUID is generated with uuidgen
-   the ITU-T UUID generator at http://www.itu.int/ITU-T/asn1/uuid.html */
-#define TA_HELLO_WORLD_UUID { 0x8aaaf200, 0x2450, 0x11e4, \
+
+/*
+ * This UUID is generated with uuidgen
+ * the ITU-T UUID generator at http://www.itu.int/ITU-T/asn1/uuid.html
+ */
+#define TA_HELLO_WORLD_UUID \
+	{ 0x8aaaf200, 0x2450, 0x11e4, \
 		{ 0xab, 0xe2, 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b} }
 
-/* The Trusted Application Function ID(s) implemented in this TA */
-#define TA_HELLO_WORLD_CMD_INC_VALUE	0
-#define TA_HELLO_WORLD_CMD_DEC_VALUE	1
+/* The function IDs implemented in this TA */
+#define TA_HELLO_WORLD_CMD_INC_VALUE		0
+#define TA_HELLO_WORLD_CMD_DEC_VALUE		1
 
 #endif /*TA_HELLO_WORLD_H*/
diff --git a/hello_world/ta/sub.mk b/hello_world/ta/sub.mk
index db2413c..957af07 100644
--- a/hello_world/ta/sub.mk
+++ b/hello_world/ta/sub.mk
@@ -1,5 +1,4 @@
 global-incdirs-y += include
-#global-incdirs-y += ../host/include
 srcs-y += hello_world_ta.c
 
 # To remove a certain compiler flag, add a line like this
diff --git a/hello_world/ta/user_ta_header_defines.h b/hello_world/ta/user_ta_header_defines.h
index 016c402..fdfa6c4 100644
--- a/hello_world/ta/user_ta_header_defines.h
+++ b/hello_world/ta/user_ta_header_defines.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Linaro Limited
+ * Copyright (c) 2016-2017, Linaro Limited
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,17 +32,27 @@
 #ifndef USER_TA_HEADER_DEFINES_H
 #define USER_TA_HEADER_DEFINES_H
 
-#include <hello_world_ta.h> /* To get the TA_HELLO_WORLD_UUID define */
+/* To get the TA UUID definition */
+#include <hello_world_ta.h>
 
-#define TA_UUID 				TA_HELLO_WORLD_UUID
+#define TA_UUID				TA_HELLO_WORLD_UUID
 
-#define TA_FLAGS				TA_FLAG_EXEC_DDR
+/*
+ * TA properties: multi-instance TA, no specific attribute
+ * TA_FLAG_EXEC_DDR is meaningless but mandated.
+ */
+#define TA_FLAGS			TA_FLAG_EXEC_DDR
+
+/* Provisioned stack size */
 #define TA_STACK_SIZE			(2 * 1024)
+
+/* Provisioned heap size for TEE_Malloc() and friends */
 #define TA_DATA_SIZE			(32 * 1024)
 
+/* Extra properties (give a version id and a string name) */
 #define TA_CURRENT_TA_EXT_PROPERTIES \
     { "gp.ta.description", USER_TA_PROP_TYPE_STRING, \
-        "Hello World TA" }, \
+        "Example of OP-TEE Hello World Trusted Application" }, \
     { "gp.ta.version", USER_TA_PROP_TYPE_U32, &(const uint32_t){ 0x0010 } }
 
-#endif /*USER_TA_HEADER_DEFINES_H*/
+#endif /* USER_TA_HEADER_DEFINES_H */
diff --git a/random/Android.mk b/random/Android.mk
index f17b621..5221265 100644
--- a/random/Android.mk
+++ b/random/Android.mk
@@ -10,10 +10,10 @@
 LOCAL_SRC_FILES += host/main.c
 
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/ta/include \
-		$(OPTEE_CLIENT_EXPORT)/include \
+		    $(OPTEE_CLIENT_EXPORT)/include
 
 LOCAL_SHARED_LIBRARIES := libteec
-LOCAL_MODULE := tee_example_random
+LOCAL_MODULE := optee_example_random
 LOCAL_MODULE_TAGS := optional
 include $(BUILD_EXECUTABLE)
 
diff --git a/random/Makefile b/random/Makefile
index ee4f5d8..3b9a8dc 100644
--- a/random/Makefile
+++ b/random/Makefile
@@ -1,4 +1,4 @@
-export V?=0
+export V ?= 0
 
 # If _HOST or _TA specific compilers are not specified, then use CROSS_COMPILE
 HOST_CROSS_COMPILE ?= $(CROSS_COMPILE)
diff --git a/random/host/Makefile b/random/host/Makefile
index fcd05f2..8d063ae 100644
--- a/random/host/Makefile
+++ b/random/host/Makefile
@@ -8,11 +8,11 @@
 
 OBJS = main.o
 
-CFLAGS += -Wall -I../ta/include -I$(TEEC_EXPORT)/include -I./include
-#Add/link other required libraries here
+CFLAGS += -Wall -I../ta/include -I./include
+CFLAGS += -I$(TEEC_EXPORT)/include
 LDADD += -lteec -L$(TEEC_EXPORT)/lib
 
-BINARY = optee_random
+BINARY = optee_example_random
 
 .PHONY: all
 all: $(BINARY)
diff --git a/random/host/main.c b/random/host/main.c
index 5ad9de0..de857b9 100644
--- a/random/host/main.c
+++ b/random/host/main.c
@@ -33,7 +33,7 @@
 #include <tee_client_api.h>
 
 /* To the the UUID (found the the TA's h-file(s)) */
-#include <random_example_ta.h>
+#include <random_ta.h>
 
 int main(int argc, char *argv[])
 {
@@ -41,7 +41,7 @@
 	TEEC_Context ctx;
 	TEEC_Session sess;
 	TEEC_Operation op = { 0 };
-	TEEC_UUID uuid = TA_RANDOM_EXAMPLE_UUID;
+	TEEC_UUID uuid = TA_RANDOM_UUID;
 	uint8_t random_uuid[16] = { 0 };
 	uint32_t err_origin;
 
@@ -75,8 +75,8 @@
 	 * Prepare the argument. Pass a value in the first parameter,
 	 * the remaining three parameters are unused.
 	 */
-	op.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_OUTPUT, TEEC_NONE,
-					 TEEC_NONE, TEEC_NONE);
+	op.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_OUTPUT,
+					 TEEC_NONE, TEEC_NONE, TEEC_NONE);
 	op.params[0].tmpref.buffer = random_uuid;
 	op.params[0].tmpref.size = sizeof(random_uuid);
 
@@ -85,8 +85,8 @@
 	 * called.
 	 */
 	printf("Invoking TA to generate random UUID... \n");
-	res = TEEC_InvokeCommand(&sess, TA_EXAMPLE_RANDOM_GENERATE, &op,
-				 &err_origin);
+	res = TEEC_InvokeCommand(&sess, TA_RANDOM_CMD_GENERATE,
+				 &op, &err_origin);
 	if (res != TEEC_SUCCESS)
 		errx(1, "TEEC_InvokeCommand failed with code 0x%x origin 0x%x",
 			res, err_origin);
diff --git a/random/ta/include/random_example_ta.h b/random/ta/include/random_ta.h
similarity index 79%
rename from random/ta/include/random_example_ta.h
rename to random/ta/include/random_ta.h
index d40bb63..30eeead 100644
--- a/random/ta/include/random_example_ta.h
+++ b/random/ta/include/random_ta.h
@@ -24,15 +24,19 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  */
-#ifndef TA_RANDOM_EXAMPLE_H
-#define TA_RANDOM_EXAMPLE_H
 
-/* This UUID is generated with uuidgen
-   the ITU-T UUID generator at http://www.itu.int/ITU-T/asn1/uuid.html */
-#define TA_RANDOM_EXAMPLE_UUID { 0xb6c53aba, 0x9669, 0x4668, \
+#ifndef __RANDOM_TA_H__
+#define __RANDOM_TA_H__
+
+/*
+ * This UUID is generated with uuidgen
+ * the ITU-T UUID generator at http://www.itu.int/ITU-T/asn1/uuid.html
+ */
+#define TA_RANDOM_UUID \
+	{ 0xb6c53aba, 0x9669, 0x4668, \
 		{ 0xa7, 0xf2, 0x20, 0x56, 0x29, 0xd0, 0x0f, 0x86} }
 
-/* The Trusted Application Function ID(s) implemented in this TA */
-#define TA_EXAMPLE_RANDOM_GENERATE	0
+/* The function ID implemented in this TA */
+#define TA_RANDOM_CMD_GENERATE		0
 
-#endif /* TA_RANDOM_EXAMPLE_H */
+#endif /* __RANDOM_TA_H__ */
diff --git a/random/ta/random_example_ta.c b/random/ta/random_example_ta.c
index 8f7506a..ef4696a 100644
--- a/random/ta/random_example_ta.c
+++ b/random/ta/random_example_ta.c
@@ -25,12 +25,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define STR_TRACE_USER_TA "RANDOM_EXAMPLE_TA"
-
 #include <tee_internal_api.h>
 #include <tee_internal_api_extensions.h>
 
-#include "random_example_ta.h"
+#include <random_ta.h>
 
 TEE_Result TA_CreateEntryPoint(void)
 {
@@ -66,9 +64,11 @@
 static TEE_Result random_number_generate(uint32_t param_types,
 	TEE_Param params[4])
 {
-	uint32_t exp_param_types = TEE_PARAM_TYPES
-					(TEE_PARAM_TYPE_MEMREF_OUTPUT, TEE_PARAM_TYPE_NONE,
-					 TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE);
+	uint32_t exp_param_types =
+				TEE_PARAM_TYPES(TEE_PARAM_TYPE_MEMREF_OUTPUT,
+						TEE_PARAM_TYPE_NONE,
+						TEE_PARAM_TYPE_NONE,
+						TEE_PARAM_TYPE_NONE);
 
 	DMSG("has been called");
 	if (param_types != exp_param_types)
@@ -95,7 +95,7 @@
 	(void)&sess_ctx;
 
 	switch (cmd_id) {
-	case TA_EXAMPLE_RANDOM_GENERATE:
+	case TA_RANDOM_CMD_GENERATE:
 		return random_number_generate(param_types, params);
 	default:
 		return TEE_ERROR_BAD_PARAMETERS;
diff --git a/random/ta/user_ta_header_defines.h b/random/ta/user_ta_header_defines.h
index 07ee1ce..37dacc1 100644
--- a/random/ta/user_ta_header_defines.h
+++ b/random/ta/user_ta_header_defines.h
@@ -32,17 +32,27 @@
 #ifndef USER_TA_HEADER_DEFINES_H
 #define USER_TA_HEADER_DEFINES_H
 
-#include <random_example_ta.h> /* To get the TA_RANDOM_EXAMPLE_UUID define */
+ /* To get the TA_RANDOM_EXAMPLE_UUID define */
+#include <random_ta.h>
 
-#define TA_UUID TA_RANDOM_EXAMPLE_UUID
+#define TA_UUID				TA_RANDOM_UUID
 
-#define TA_FLAGS                    TA_FLAG_EXEC_DDR
-#define TA_STACK_SIZE               (2 * 1024)
-#define TA_DATA_SIZE                (32 * 1024)
+/*
+ * TA properties: multi-instance TA, no specific attribute
+ * TA_FLAG_EXEC_DDR is meaningless but mandated.
+ */
+#define TA_FLAGS			TA_FLAG_EXEC_DDR
 
+/* Provisioned stack size */
+#define TA_STACK_SIZE			(2 * 1024)
+
+/* Provisioned heap size for TEE_Malloc() and friends */
+#define TA_DATA_SIZE			(32 * 1024)
+
+/* Extra properties (give a version id and a string name) */
 #define TA_CURRENT_TA_EXT_PROPERTIES \
     { "gp.ta.description", USER_TA_PROP_TYPE_STRING, \
-      "Fill buffer with output from TEE_GenerateRandom" }, \
+      "Example of a TA that returns the output from TEE_GenerateRandom" }, \
     { "gp.ta.version", USER_TA_PROP_TYPE_U32, &(const uint32_t){ 0x0010 } }
 
-#endif /*USER_TA_HEADER_DEFINES_H*/
+#endif /* USER_TA_HEADER_DEFINES_H */
