diff --git a/app/components/InputPanel.jsx b/app/components/InputPanel.jsx
index 2f3fda7c83e6f6f7f1a96ced7402716abc575c65..42b314aa7705c5e32712f1b79a3e5270dbdacdc0 100644
--- a/app/components/InputPanel.jsx
+++ b/app/components/InputPanel.jsx
@@ -2,17 +2,19 @@ import React from 'react';
 import PropTypes from 'prop-types'
 import RouteTile from './RouteTile'
 
-const InputPanel = ({routes, onAdd}) => (
+const InputPanel = ({routes, onAdd, onDelete}) => (
   <div>
     {routes.map((stops, i) => (
-      <RouteTile key={i} stops={stops} />
+      <RouteTile onDelete={() => onDelete(i)} key={i} stops={stops} />
     ))}
     <RouteTile onAdd={onAdd} stops={[]} />
   </div>
 )
 
 InputPanel.propTypes = {
-  routes: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)).isRequired
+  routes: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)).isRequired,
+  onAdd: PropTypes.func.isRequired,
+  onDelete: PropTypes.func.isRequired,
 }
 
 export default InputPanel
diff --git a/app/components/RouteTile.jsx b/app/components/RouteTile.jsx
index 321995f9f388cfde5fe96677f8471868ebe34544..b70f7e7dd24ad260d8e92a48d9fb15a6dafeea87 100644
--- a/app/components/RouteTile.jsx
+++ b/app/components/RouteTile.jsx
@@ -1,10 +1,10 @@
 import React from 'react'
 import PropTypes from 'prop-types'
 
-const RouteTile = ({stops, onAdd, url}) => {
+const RouteTile = ({stops, onAdd, url, onDelete}) => {
   let input
 
-  return stops.length == 0 ?
+  return stops.length == 0 && url === undefined ?
   <div>
       <form onSubmit={(e) => {
         e.preventDefault()
@@ -12,6 +12,7 @@ const RouteTile = ({stops, onAdd, url}) => {
           return
         }
         onAdd(input.value.trim())
+        input.value = ""
       }}>
         <input type="text" ref={node => {input = node}} />
         <input type="submit" value="+" />
@@ -19,7 +20,7 @@ const RouteTile = ({stops, onAdd, url}) => {
   </div>
   :
   <div>
-    { url === undefined && <input type="button" value="-" /> }
+    { url === undefined && <input onClick={onDelete} type="button" value="-" /> }
     { url === undefined && <input type="button" value="&#x1F589;" /> }
     { url !== undefined && <div className="url">{url}</div> }
     <ul>
@@ -33,7 +34,8 @@ const RouteTile = ({stops, onAdd, url}) => {
 RouteTile.propTypes = {
   stops: PropTypes.arrayOf(PropTypes.string).isRequired,
   url: PropTypes.string,
-  onAdd: PropTypes.func.isRequired
+  onAdd: PropTypes.func,
+  onDelete: PropTypes.func,
 }
 
 export default RouteTile
diff --git a/app/containers/InputPanel.js b/app/containers/InputPanel.js
index a099b82ed978c0be83482e51642d5ccba41bae42..33c79de7664afc326a22e4d2d6b89fc5cdf9f778 100644
--- a/app/containers/InputPanel.js
+++ b/app/containers/InputPanel.js
@@ -1,14 +1,15 @@
 import { connect } from 'react-redux'
 import * as at from '../actions/actionTypes'
 import InputPanel from '../components/InputPanel'
-import { mkAddUrl } from '../actions'
+import { mkAddUrl, mkDeleteRoute } from '../actions'
 
 const mapStateToProps = state => {
   return { routes: state.routes }
 }
 
 const mapDispatchToProps = dispatch => ({
-  onAdd: (url) => dispatch(mkAddUrl(url))
+  onAdd: (url) => dispatch(mkAddUrl(url)),
+  onDelete: (index) => dispatch(mkDeleteRoute(index))
 })
 
 export default connect(mapStateToProps, mapDispatchToProps)(InputPanel)
diff --git a/app/helpers/index.js b/app/helpers/index.js
index 87918fc57c1f335299a8b4845411e51ca1e08dbd..2ba34345cfc3f3ba3c112ee8dd74871ddd408be7 100644
--- a/app/helpers/index.js
+++ b/app/helpers/index.js
@@ -20,5 +20,8 @@ export const extractStops = (url) => {
 }
 
 export const buildUrl = (stops) => {
+  if (stops.length == 0) {
+    return ""
+  }
   return "https://www.google.com/maps/dir/" + stops.join("/") + "/"
 }
diff --git a/app/reducers/index.js b/app/reducers/index.js
index 3e8b77664680ddb3a8063889fb463e2734893914..020e6b343edf8b22986885002ba574bcf706232d 100644
--- a/app/reducers/index.js
+++ b/app/reducers/index.js
@@ -11,6 +11,9 @@ const reducer = (state = initialState, action) => {
     case at.ADD_URL:
       return {routes: state.routes.concat([extractStops(action.payload)])}
 
+    case at.DELETE_ROUTE:
+      return {routes: state.routes.filter((v, i) => i != action.payload)}
+
     default:
       return state
   }