diff --git a/src/core/exec.rs b/src/core/exec.rs
index 820cdc0a5f003821849dfb353d6b1b4bd81d81d8..6d8910e42458e03643cb2d03466b4521ca7ded90 100644
--- a/src/core/exec.rs
+++ b/src/core/exec.rs
@@ -49,6 +49,14 @@ impl Editor {
                                                               mode: InsertMode::Insert,
                                                           }));
 
+            }
+            (Command(Normal), Char('I')) => {
+                self.cursor_mut().x = 0;
+                self.cursor_mut().mode =
+                    Mode::Primitive(PrimitiveMode::Insert(InsertOptions {
+                                                              mode: InsertMode::Insert,
+                                                          }));
+
             }
             (Command(Normal), Char('a')) => {
                 let pos = self.right(1, false);
@@ -57,7 +65,15 @@ impl Editor {
                     Mode::Primitive(PrimitiveMode::Insert(InsertOptions {
                                                               mode: InsertMode::Insert,
                                                           }));
-
+            }
+            (Command(Normal), Char('A')) => {
+                let pos = (self.buffers.current_buffer()[self.y()].len(), self.y());
+                //let pos = self.right(1, false);
+                self.goto(pos);
+                self.cursor_mut().mode =
+                    Mode::Primitive(PrimitiveMode::Insert(InsertOptions {
+                                                              mode: InsertMode::Insert,
+                                                          }));
             }
             (Command(Normal), Char('o')) => {
                 let y = self.y();
@@ -118,7 +134,7 @@ impl Editor {
                 self.goto(bounded);
             }
             (Command(Normal), Char('L')) => {
-                let ln_end = (self.buffers.current_buffer()[self.y()].len(), self.y());
+                let ln_end = (self.buffers.current_buffer()[self.y()].len() - 1, self.y());
                 self.goto(ln_end);
                 mov = true;
             }
@@ -149,6 +165,16 @@ impl Editor {
                     self.remove_rb(m);
                 }
             }
+            (Command(Normal), Char('c')) => {
+                let ins = self.get_inst();
+                if let Some(m) = self.to_motion_unbounded(ins) {
+                    self.remove_rb(m);
+                    self.cursor_mut().mode =
+                        Mode::Primitive(PrimitiveMode::Insert(InsertOptions {
+                                                                  mode: InsertMode::Insert,
+                                                           }));
+                }
+            }
             (Command(Normal), Char('G')) => {
                 let last = self.buffers.current_buffer().len() - 1;
                 self.goto((0, last));