diff --git a/02-UML/ST_BLINKER.uxf b/02-UML/ST_BLINKER.uxf
new file mode 100644
index 0000000..6c56d48
--- /dev/null
+++ b/02-UML/ST_BLINKER.uxf
@@ -0,0 +1,183 @@
+
+
+ 17
+
+ UMLSpecialState
+
+ 646
+ 51
+ 34
+ 34
+
+ type=initial
+
+
+
+ Relation
+
+ 646
+ 68
+ 153
+ 153
+
+ lt=->
+evBLInit
+ 10.0;10.0;10.0;70.0
+
+
+ UMLState
+
+ 510
+ 187
+ 306
+ 85
+
+ ST_WAIT
+--
+remainBlinks = 3;
+
+
+
+ UMLState
+
+ 510
+ 374
+ 306
+ 102
+
+ ST_ON
+--
+if(blink3) remainBlinks--
+-.
+/ entry: turnOn()
+
+
+
+ Relation
+
+ 646
+ 459
+ 153
+ 136
+
+ lt=->
+evTimer
+ 10.0;10.0;10.0;60.0
+
+
+ UMLState
+
+ 544
+ 561
+ 238
+ 102
+
+ ST_OFF
+--
+-.
+/ entry: turnOff()
+
+
+
+ Relation
+
+ 646
+ 646
+ 153
+ 153
+
+ lt=->
+evTimer
+ 10.0;10.0;10.0;70.0
+
+
+ Relation
+
+ 527
+ 255
+ 272
+ 153
+
+ lt=->
+m1=evBlinkN
+m2=/ nBlinkIsOn = true
+ 10.0;10.0;10.0;70.0
+
+
+ Relation
+
+ 765
+ 255
+ 289
+ 153
+
+ lt=->
+m1=evBlink
+m2=/ nBlinkIsOn = false
+ 10.0;10.0;10.0;70.0
+
+
+ UMLSpecialState
+
+ 629
+ 765
+ 68
+ 68
+
+ type=decision
+
+
+
+ Relation
+
+ 442
+ 408
+ 221
+ 442
+
+ lt=->
+m1=[else]
+ 110.0;230.0;10.0;230.0;10.0;10.0;40.0;10.0
+
+
+ Relation
+
+ 680
+ 204
+ 391
+ 646
+
+ lt=->
+m1=[remainBlinks==0]
+ 10.0;350.0;210.0;350.0;210.0;10.0;80.0;10.0
+
+
+ UMLClass
+
+ 1462
+ 0
+ 952
+ 527
+
+ BLINKER
+--
++state: BLINKER_STATES
++tON: uint16_t
++tOFF: uint16_t
++blink3: bool
++nBlink: uint8_t
++turnOn: blinkerCallBack
++turnOff: blinkerCallBack
+--
++BLINKER_init(me: BLINKER*): void
++BLINKER_defineCallBack(f: fBlinkerCallBack, param: void*): blinkerCallBack
++BLINKER_starBehaviour(me: BLINKER*): void
++BLINKER_setTurnOn(me: BLINKER*, callBack: blinkerCallBack): void
++BLINKER_setTurnOff(me: BLINKER*, callBack: blinkerCallBack): void
++BLINKER_blink3(me: BLINKER*): void
++BLINKER_blink(me: BLINKER*): void
++BLINKER_processEvent(mev: Event*): bool
++BLINKER_endBlink(me: BLINKER*): void
+
+
+
diff --git a/02-UML/ST_BUTTON.uxf b/02-UML/ST_BUTTON.uxf
index ae28134..6c15d78 100644
--- a/02-UML/ST_BUTTON.uxf
+++ b/02-UML/ST_BUTTON.uxf
@@ -4,8 +4,8 @@
UMLSpecialState
- 1160
- 200
+ 860
+ 80
40
40
@@ -15,8 +15,8 @@
UMLState
- 680
- 520
+ 380
+ 400
280
80
@@ -26,8 +26,8 @@
UMLState
- 1400
- 520
+ 1100
+ 400
280
80
@@ -37,8 +37,8 @@
Relation
- 1520
- 580
+ 1220
+ 460
180
240
@@ -49,8 +49,8 @@ evPBPoll
Relation
- 1160
- 220
+ 860
+ 100
180
180
@@ -61,8 +61,8 @@ evPBInit
UMLSpecialState
- 1140
- 360
+ 840
+ 240
80
80
@@ -72,8 +72,8 @@ evPBInit
Relation
- 800
- 380
+ 500
+ 260
380
180
@@ -84,8 +84,8 @@ m1=[pB==1]
Relation
- 800
- 580
+ 500
+ 460
180
180
@@ -96,8 +96,8 @@ evPBPoll
Relation
- 1200
- 380
+ 900
+ 260
380
180
@@ -108,8 +108,8 @@ m1=[pB==0]
UMLSpecialState
- 780
- 720
+ 480
+ 600
80
80
@@ -119,8 +119,8 @@ m1=[pB==0]
UMLSpecialState
- 1500
- 780
+ 1200
+ 660
80
80
@@ -130,8 +130,8 @@ m1=[pB==0]
Relation
- 880
- 440
+ 580
+ 320
660
440
@@ -142,8 +142,8 @@ m1=[pB==1] / pbPress()
Relation
- 840
- 440
+ 540
+ 320
660
380
@@ -155,8 +155,8 @@ m1=[pB==0] / pbRelease()
Relation
- 600
- 440
+ 300
+ 320
220
380
@@ -167,8 +167,8 @@ m1=[else]
Relation
- 1560
- 440
+ 1260
+ 320
220
440
@@ -179,8 +179,8 @@ m1=[else]
UMLNote
- 1000
- 880
+ 700
+ 760
400
100