Index: uspace/dist/sysel/except.sy
===================================================================
--- uspace/dist/sysel/except.sy	(revision 6ba20a6b2dda5a2453cdb689201f0b9bf36bece3)
+++ uspace/dist/sysel/except.sy	(revision 5da468ef646d75eceb4aa88033bece23060612fb)
@@ -28,5 +28,5 @@
 
 class ExceptionDemo is
-	fun foo() : int is
+	fun foo() is
 	        Builtin.WriteLine("Entered foo().");
 		raise new BaseException();
Index: uspace/dist/sysel/hexec.sy
===================================================================
--- uspace/dist/sysel/hexec.sy	(revision 6ba20a6b2dda5a2453cdb689201f0b9bf36bece3)
+++ uspace/dist/sysel/hexec.sy	(revision 5da468ef646d75eceb4aa88033bece23060612fb)
@@ -29,6 +29,6 @@
 class HelenOSExecDemo is
 	fun Main() is
-		Builtin.Exec("/app/tester");
-		Builtin.Exec("/app/tester", "print1");
+		Task.Exec("/app/tester");
+		Task.Exec("/app/tester", "print1");
 	end
 end
Index: uspace/dist/sysel/inherit.sy
===================================================================
--- uspace/dist/sysel/inherit.sy	(revision 6ba20a6b2dda5a2453cdb689201f0b9bf36bece3)
+++ uspace/dist/sysel/inherit.sy	(revision 5da468ef646d75eceb4aa88033bece23060612fb)
@@ -45,8 +45,11 @@
 	fun Main() is
 		var a : A;
+		var c : C;
 
+		-- Construct and assign object.
 		a = new A();
 		a.Foo();
 
+		-- Implicit conversion to base type.
 		a = new B();
 		a.Foo();
@@ -54,4 +57,13 @@
 		a = new C();
 		a.Foo();
+
+		-- Test 'as' operator for conversion to derived type.
+		c = a as C;
+
+		-- Test grandfather class.
+		var d : Object;
+		d = a;
+		d = new B();
+		d = c;
 	end
 end
Index: uspace/dist/sysel/list.sy
===================================================================
--- uspace/dist/sysel/list.sy	(revision 6ba20a6b2dda5a2453cdb689201f0b9bf36bece3)
+++ uspace/dist/sysel/list.sy	(revision 5da468ef646d75eceb4aa88033bece23060612fb)
@@ -27,7 +27,9 @@
 --
 
+-- Doubly-linked list implementation.
 class List is
 	var head : ListNode;
 
+	-- Initialize list.
 	fun Init() is
 		head = new ListNode();
@@ -36,4 +38,5 @@
 	end
 
+	-- Append new entry at the end of the list.
 	fun Append(data : int) is
 		var n : ListNode;
@@ -53,6 +56,18 @@
 	end
 
-	fun GetFirst() : ListNode is
-		return head.next;
+	-- Return first node in the list or @c nil if there is none.
+	prop First : ListNode is
+		get is
+		    return get_first();
+		end
+	end
+
+	-- Return first node in the list or @c nil if there is none.
+	fun get_first() : ListNode is
+		if head.next == head then
+			return nil;
+		else
+			return head.next;
+		end
 	end
 end
@@ -65,5 +80,27 @@
 	var head : ListNode;
 
-	fun GetNext() : ListNode is
+	-- Value stored in this node.
+	prop Value : int is
+		get is
+			return value;
+		end
+	end
+
+	-- Previous node in list.
+	prop Prev : ListNode is
+		get is
+			return get_prev();
+		end
+	end
+
+	-- Next node in list.
+	prop Next : ListNode is
+		get is
+			return get_next();
+		end
+	end
+
+	-- Get next node.
+	fun get_next() : ListNode is
 		if next != head then
 			return next;
@@ -73,5 +110,6 @@
 	end
 
-	fun GetPrev() : ListNode is
+	-- Get previous node.
+	fun get_prev() : ListNode is
 		if prev != head then
 			return next;
@@ -81,7 +119,4 @@
 	end
 
-	fun GetValue() : int is
-		return value;
-	end
 end
 
@@ -100,8 +135,8 @@
 		var n : ListNode;
 
-		n = list.GetFirst();
+		n = list.First;
 		while n != nil do
 			Builtin.WriteLine(n.value);
-			n = n.GetNext();
+			n = n.Next;
 		end
 	end
Index: uspace/dist/sysel/property.sy
===================================================================
--- uspace/dist/sysel/property.sy	(revision 6ba20a6b2dda5a2453cdb689201f0b9bf36bece3)
+++ uspace/dist/sysel/property.sy	(revision 5da468ef646d75eceb4aa88033bece23060612fb)
@@ -27,5 +27,5 @@
 --
 
-class A is
+class Foo is
 	var x : int;
 
@@ -68,12 +68,39 @@
 		end
 	end
+
+	--
+	-- Class-type property. This is used for demonstrating property
+	-- field access. This case is still quite easy. It does not require
+	-- read-modify-write. Since class is a reference type, access
+	-- operator will read the value and dereference it, thereby
+	-- getting somewhere else (so the value will not be modified and
+	-- need not be written back).
+	--
+
+	var bprop : Bar;
+
+	prop B : Bar is
+		get is
+			Builtin.WriteLine("Getting B");
+			return bprop;
+		end
+		set value is
+			Builtin.WriteLine("Setting B");
+			bprop = value;
+		end
+	end
+
+end
+
+class Bar is
+	var i : int;
 end
 
 class PropertyDemo is
 	fun Main() is
-		var a : A;
+		var a : Foo;
 		var i : int;
 
-		a = new A();
+		a = new Foo();
 
 		-- Get value of named property.
@@ -96,4 +123,16 @@
 		Builtin.WriteLine("Main(): Got ");
 		Builtin.WriteLine(i);
+
+		-- Property field access
+		var b : Bar;
+
+		b = new Bar();
+
+		b.i = 42;
+		a.bprop = b;
+
+		Builtin.WriteLine(a.bprop.i);
+		a.bprop.i = 2;
+		Builtin.WriteLine(a.bprop.i);
 	end
 end
Index: uspace/dist/sysel/string.sy
===================================================================
--- uspace/dist/sysel/string.sy	(revision 6ba20a6b2dda5a2453cdb689201f0b9bf36bece3)
+++ uspace/dist/sysel/string.sy	(revision 5da468ef646d75eceb4aa88033bece23060612fb)
@@ -31,4 +31,12 @@
 		-- Concatenate some strings.
 		Builtin.WriteLine("One-" + "two-" + "three!");
+
+		-- Extract characters from a string.
+		var i : int;
+		i = 0;
+		while i < 5 do
+			Builtin.WriteLine("ABCDE"[i]);
+			i = i + 1;
+		end
 	end
 end
