diff --git a/TODO_Animation.md b/TODO_Animation.md
index 75d7becd..b7a74464 100644
--- a/TODO_Animation.md
+++ b/TODO_Animation.md
@@ -95,3 +95,33 @@ interface IGuiGraphicsAnimationInterpolation
```
+
+## Proposal (3)
+
+- Remove ``
+- Add `Type="Once|Repeat"` to ``
+- All `` should set exactly the same set of properties
+- All properties that are not set in `` should have a `Value` property, which is similar to `Interpolation`
+ - `Property Value` = `Value`(`Interpolation`((`CurrentTime` - `StartTime`) % `Length` / cast double `Length`))
+- (optional) Syntax for `$switch` to wait for callbacks caused from some actions in the `$init` block
+- (optional) Syntax for `$switch` to raise a specified exception for wrong inputs
+
+```
+try
+ {
+ $switch(raise "Sad!")
+ {
+ $init
+ {
+ DownloadAsync().Execute([$1; this.Cancel(); ], null);
+ }
+ case A():{}
+ case B():{}
+ }
+}
+catch(ex)
+{
+ if (ex.Message == "Sad!") { return; }
+ raise;
+}
+```