diff --git a/src/adormit/adormit.go b/src/adormit/adormit.go
index 760f9c0fdc21d0c788e7697e1674cb41d92a3c71..5224658d68a96d15a184c99a07e53132283800ce 100644
--- a/src/adormit/adormit.go
+++ b/src/adormit/adormit.go
@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"github.com/godbus/dbus"
 	"github.com/gotk3/gotk3/glib"
+	"os/exec"
 	"reflect"
 	"time"
 )
@@ -21,6 +22,23 @@ type Timer struct {
 	start    time.Time
 	duration time.Duration
 	end      time.Time
+	command  string
+	args     []string
+}
+
+func (t Timer) Countdown() {
+	timer1 := time.NewTimer(t.duration)
+	<-timer1.C
+	fmt.Println("Timer completed")
+	t.end = time.Now()
+	cmd := exec.Command(t.command, t.args...)
+	cmd.Run()
+}
+
+func DemoTimer() {
+	args := []string{"-i", "clock", "Timer over!", "adormit"}
+	t := Timer{duration: time.Second * 1, command: "notify-send", args: args}
+	t.Countdown()
 }
 
 func MakeAlarm() {
@@ -29,20 +47,18 @@ func MakeAlarm() {
 }
 
 func SetAlarm(alarm Alarm) {
-	var insert []map[string]interface{}
-	// insert := make(map[string]dbus.Variant)
-	a := make(map[string]interface{})
-	a["name"] = alarm.name
-	a["active"] = alarm.active
-	// existing_alarms := GetGnomeAlarms()
-	// total_update := make([]map[string]dbus.Variant, 10)
-	// total_update = append(total_update, insert)
-	// total_update = append(total_update, existing_alarms)
-	// total_update[2] = insert
+	var insert []map[string]dbus.Variant
+	a := make(map[string]dbus.Variant)
+	a["name"] = dbus.MakeVariant(alarm.name)
+	a["active"] = dbus.MakeVariant(alarm.active)
+	existing_alarms := GetGnomeAlarms()
 	insert = append(insert, a)
+	for _, v := range existing_alarms {
+		insert = append(insert, v)
+	}
+	// insert = append(insert, get_v().([]interface{})[0].(map[string]interface{}))
 	sig, _ := dbus.ParseSignature("aa{sv}")
 	existing_alarms_var := dbus.MakeVariantWithSignature(insert, sig)
-
 	fmt.Println(existing_alarms_var)
 }
 
@@ -55,6 +71,14 @@ func debug(ty interface{}) {
 	}
 }
 
+func get_v() interface{} {
+	settings := glib.SettingsNew("org.gnome.clocks")
+	alarms := settings.GetValue("alarms")
+	sig, _ := dbus.ParseSignature("aa{sv}")
+	v, _ := dbus.ParseVariant(alarms.String(), sig)
+	return v.Value()
+}
+
 func GetGnomeAlarms() []map[string]dbus.Variant {
 	//gsettings get org.gnome.clocks alarms
 	settings := glib.SettingsNew("org.gnome.clocks")
diff --git a/src/cmd/root.go b/src/cmd/root.go
index 7296819be743526e062e1d538afc1b2e7d610c02..3c035d4109d2b5a952e0689b256ad328b7923737 100644
--- a/src/cmd/root.go
+++ b/src/cmd/root.go
@@ -12,6 +12,7 @@ var RootCmd = &cobra.Command{
 		// cmd.Help()
 		adormit.GetGnomeAlarms()
 		adormit.MakeAlarm()
+		adormit.DemoTimer()
 	},
 }