diff --git a/examples/draw.rs b/examples/draw.rs
deleted file mode 100644
index c0551c6d72a1c42a149bdfb9608167f00a3a35fa..0000000000000000000000000000000000000000
--- a/examples/draw.rs
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright 2019 The xi-editor Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//! An example of an animating widget.
-
-use std::f64::consts::PI;
-
-use druid::kurbo::{BezPath, Line};
-use druid::widget::{Flex, Label, WidgetExt};
-use druid::{
-    AppLauncher, BoxConstraints, Color, Env, Event, EventCtx, LayoutCtx, LinearGradient, PaintCtx,
-    PlatformError, Point, RenderContext, Size, UnitPoint, UpdateCtx, Vec2, WheelEvent, Widget,
-    WindowDesc,
-};
-
-use log::info;
-
-enum MouseState {
-    Up,
-    Down,
-}
-struct DrawWidget {
-    state: MouseState,
-    points: Vec<Point>,
-}
-
-impl Widget<()> for DrawWidget {
-    fn event(&mut self, ctx: &mut EventCtx, event: &Event, _data: &mut (), _env: &Env) {
-        match event {
-            Event::MouseDown(m) => {
-                info!("down: pos {:?}", m.pos);
-                //info!("down: pos {:?}, pos_rel {:?}", m.pos);
-                self.state = MouseState::Down;
-                self.points.push(m.pos);
-                ctx.invalidate();
-            }
-            Event::MouseMoved(m) => match self.state {
-                MouseState::Down => {
-                    info!("pos {:?}", m.pos);
-                }
-                _ => {}
-            },
-            Event::MouseUp(m) => {
-                info!("up:pos {:?}", m.pos);
-                self.state = MouseState::Up;
-            }
-            _ => {}
-        }
-    }
-
-    fn update(&mut self, ctx: &mut UpdateCtx, _old_data: Option<&()>, _data: &(), env: &Env) {
-        //info!("update {:?}", env.get());
-        ctx.invalidate();
-    }
-
-    fn layout(
-        &mut self,
-        _layout_ctx: &mut LayoutCtx,
-        bc: &BoxConstraints,
-        _data: &(),
-        _env: &Env,
-    ) -> Size {
-        bc.constrain((100.0, 100.0))
-    }
-
-    fn paint(&mut self, paint_ctx: &mut PaintCtx, _data: &(), _env: &Env) {
-        info!("paint");
-
-        if let Some(p) = self.points.iter().next() {
-            let mut path = BezPath::new();
-            path.move_to(*p);
-
-            for p in self.points.iter() {
-                path.line_to(*p);
-            }
-
-            paint_ctx.stroke(path, &Color::WHITE, 1.0);
-        }
-    }
-}
-
-#[derive(Debug)]
-struct DialWidget {
-    size: Size,
-    down_pos: Option<Point>,
-    cur_pos: Point,
-    value: f64, // in range 0.0..= 1.0
-}
-
-impl Widget<()> for DialWidget {
-    fn event(&mut self, ctx: &mut EventCtx, event: &Event, _data: &mut (), _env: &Env) {
-        match event {
-            Event::MouseDown(m) => {
-                info!("down: pos {:?}", m.pos);
-                //info!("down: pos {:?}, pos_rel {:?}", m.pos);
-                self.down_pos = Some(m.pos);
-            }
-            Event::MouseMoved(m) => match self.down_pos {
-                Some(down_pos) => {
-                    self.cur_pos = m.pos;
-                    info!("down_pos {:?}, cur_pos {:?}", down_pos, m.pos);
-                }
-                _ => {}
-            },
-            Event::MouseUp(m) => {
-                info!("up:pos {:?}", m.pos);
-
-                self.value = self.value + 1.0;
-            }
-            Event::Wheel(w) => {
-                info!("Event {:?}", w.delta);
-                let mut delta = w.delta.y / (120 * 10) as f64; // 1% for my machine
-                if w.mods.shift {
-                    delta = delta / 10.0;
-                };
-                if w.mods.ctrl {
-                    delta = delta / 10.0;
-                };
-
-                self.value -= delta;
-                self.value = f64::max(0.0, f64::min(1.0, self.value));
-                ctx.invalidate();
-            }
-            _ => (),
-        }
-    }
-
-    fn update(&mut self, ctx: &mut UpdateCtx, _old_data: Option<&()>, _data: &(), env: &Env) {
-        //info!("update {:?}", env.get());
-        ctx.invalidate();
-    }
-
-    fn layout(
-        &mut self,
-        _layout_ctx: &mut LayoutCtx,
-        bc: &BoxConstraints,
-        _data: &(),
-        _env: &Env,
-    ) -> Size {
-        bc.constrain(self.size) // size of dial
-    }
-
-    fn paint(&mut self, paint_ctx: &mut PaintCtx, _data: &(), _env: &Env) {
-        info!("dial paint");
-        // far some reason origin (0,0) seems not to point to the border not the interior
-        let center = Point::new(self.size.width / 2.0, self.size.height / 2.0);
-        let diameter = 0.8 * self.size.width / 2.0;
-        let mut path = BezPath::new();
-        let ambit0 = center + diameter * Vec2::from_angle(0.0);
-        path.move_to(ambit0);
-        for v in (0..360).step_by(10) {
-            let ambit = center + diameter * Vec2::from_angle(v as f64 / 360.0 * 2.0 * PI);
-            path.line_to(ambit);
-        }
-        path.close_path();
-        paint_ctx.stroke(path, &Color::WHITE, 1.0);
-
-        let mut path = BezPath::new();
-        path.move_to(center);
-        path.line_to(
-            center + diameter * Vec2::from_angle(self.value * 2.0 * 0.75 * PI + 2.0 * PI * 0.375),
-        );
-        paint_ctx.stroke(path, &Color::WHITE, 1.0);
-    }
-}
-
-fn build_app() -> impl Widget<()> {
-    let solid = Color::rgb8(0x3a, 0x3a, 0x3a);
-    let gradient = LinearGradient::new(
-        UnitPoint::TOP_LEFT,
-        UnitPoint::BOTTOM_RIGHT,
-        (Color::rgb8(0x11, 0x11, 0x11), Color::rgb8(0xbb, 0xbb, 0xbb)),
-    );
-
-    Flex::column()
-        .with_child(
-            Flex::row()
-                .with_child(
-                    DialWidget {
-                        size: Size::new(100.0, 100.0),
-                        down_pos: None,
-                        cur_pos: Point::new(0.0, 0.0),
-                        value: 0.0,
-                    }
-                    .border(gradient.clone(), 4.0)
-                    .padding(10.0),
-                    0.0, // horizontal
-                )
-                .with_child(
-                    DrawWidget {
-                        state: MouseState::Up,
-                        points: Vec::new(),
-                    }
-                    .border(gradient.clone(), 4.0)
-                    .padding(10.0),
-                    0.0,
-                )
-                .with_child(
-                    Label::new("top right")
-                        .background(solid.clone())
-                        .padding(10.0),
-                    1.0,
-                ),
-            0.0, // vertical
-        )
-        .with_child(
-            Flex::row()
-                .with_child(
-                    Label::new("bottom left")
-                        .background(gradient.clone())
-                        .rounded(10.0)
-                        .padding(10.0),
-                    0.0,
-                )
-                .with_child(
-                    Label::new("bottom right")
-                        .border(solid.clone(), 4.0)
-                        .rounded(10.0)
-                        .padding(10.0),
-                    1.0,
-                ),
-            1.0,
-        )
-}
-
-fn main() -> Result<(), PlatformError> {
-    AppLauncher::with_window(WindowDesc::new(build_app))
-        .use_simple_logger()
-        .launch(())?;
-
-    Ok(())
-}