``` class Listenable<T> { constructor(init...
# announcements
z
Copy code
class Listenable<T>  {
	constructor(initialValue: T) { value = initialValue; }
	private val value: T;
	fun get(): T { return value; }
	fun set(newValue: T) { value = newValue; callListeners(); }
	fun addListener(listener: (T, T) -> Unit) { ... }
	fun removeListener(listener: (T, T) -> Unit) { ... }
	private fun callListeners() { ... }
}

class Foo {
	var prop1: Listenable<String> = Listenable("");
}

val foo = Foo()
foo.prop1.addListener { (before, after) -> println "before -> after" }
foo.prop1..set("bar");