Index: uspace/srv/audio/hound/hound.c
===================================================================
--- uspace/srv/audio/hound/hound.c	(revision 1c33539cf1a67752044f7746e6a870d06c71c5c5)
+++ uspace/srv/audio/hound/hound.c	(revision 64248008142adab8a445736667ba951f6d4529d4)
@@ -201,4 +201,36 @@
 }
 
+int hound_remove_source(hound_t *hound, audio_source_t *source)
+{
+	assert(hound);
+	if (!source)
+		return EINVAL;
+	log_verbose("Removing source '%s'.", source->name);
+	fibril_mutex_lock(&hound->list_guard);
+	if (!list_member(&source->link, &hound->sources)) {
+		fibril_mutex_unlock(&hound->list_guard);
+		return EBUSY;
+	}
+	list_remove(&source->link);
+	fibril_mutex_unlock(&hound->list_guard);
+	return EOK;
+}
+
+int hound_remove_sink(hound_t *hound, audio_sink_t *sink)
+{
+	assert(hound);
+	if (!sink)
+		return EINVAL;
+	log_verbose("Removing sink '%s'.", sink->name);
+	fibril_mutex_lock(&hound->list_guard);
+	if (!list_empty(&sink->sources)) {
+		fibril_mutex_unlock(&hound->list_guard);
+		return EBUSY;
+	}
+	list_remove(&sink->link);
+	fibril_mutex_unlock(&hound->list_guard);
+	return EOK;
+}
+
 int hound_connect(hound_t *hound, const char* source_name, const char* sink_name)
 {
Index: uspace/srv/audio/hound/hound.h
===================================================================
--- uspace/srv/audio/hound/hound.h	(revision 1c33539cf1a67752044f7746e6a870d06c71c5c5)
+++ uspace/srv/audio/hound/hound.h	(revision 64248008142adab8a445736667ba951f6d4529d4)
@@ -59,4 +59,6 @@
 int hound_add_source(hound_t *hound, audio_source_t *source);
 int hound_add_sink(hound_t *hound, audio_sink_t *sink);
+int hound_remove_source(hound_t *hound, audio_source_t *source);
+int hound_remove_sink(hound_t *hound, audio_sink_t *sink);
 int hound_connect(hound_t *hound, const char* source_name, const char* sink_name);
 int hound_disconnect(hound_t *hound, const char* source_name, const char* sink_name);
Index: uspace/srv/audio/hound/main.c
===================================================================
--- uspace/srv/audio/hound/main.c	(revision 1c33539cf1a67752044f7746e6a870d06c71c5c5)
+++ uspace/srv/audio/hound/main.c	(revision 64248008142adab8a445736667ba951f6d4529d4)
@@ -178,4 +178,5 @@
 			audio_client_t * client =
 			    audio_client_get_recording(name, &format, sess);
+			free(name);
 			if (!client) {
 				log_error("Failed to create recording client");
@@ -196,13 +197,41 @@
 		}
 		case HOUND_UNREGISTER_PLAYBACK: {
-			//const char *name = get_name();
-			//TODO unregister in hound
-			//TODO remove from local
+			const char *name = get_name();
+			int ret = ENOENT;
+			list_foreach(local_playback, it) {
+				audio_client_t *client =
+				    audio_client_list_instance(it);
+				if (str_cmp(client->name, name) == 0) {
+					ret = hound_remove_source(&hound,
+					    &client->source);
+					if (ret == EOK) {
+						list_remove(&client->link);
+						audio_client_destroy(client);
+					}
+					break;
+				}
+			}
+			free(name);
+			async_answer_0(callid, ret);
 			break;
 		}
 		case HOUND_UNREGISTER_RECORDING: {
-			//TODO Get Name
-			//TODO unregister in hound
-			//TODO remove from local
+			const char *name = get_name();
+			int ret = ENOENT;
+			list_foreach(local_recording, it) {
+				audio_client_t *client =
+				    audio_client_list_instance(it);
+				if (str_cmp(client->name, name) == 0) {
+					ret = hound_remove_sink(&hound,
+					    &client->sink);
+					if (ret == EOK) {
+						list_remove(&client->link);
+						audio_client_destroy(client);
+					}
+					break;
+				}
+			}
+			free(name);
+			async_answer_0(callid, ret);
 			break;
 		}
@@ -237,4 +266,20 @@
 			break;
 		case 0:
+			while(!list_empty(&local_recording)) {
+				audio_client_t *client =
+				    audio_client_list_instance(
+				        list_first(&local_recording));
+				list_remove(&client->link);
+				hound_remove_sink(&hound, &client->sink);
+				audio_client_destroy(client);
+			}
+			while(!list_empty(&local_playback)) {
+				audio_client_t *client =
+				    audio_client_list_instance(
+				        list_first(&local_playback));
+				list_remove(&client->link);
+				hound_remove_source(&hound, &client->source);
+				audio_client_destroy(client);
+			}
 			//TODO remove all clients
 			return;
