diff --git a/src/components/backpack/backpack.jsx b/src/components/backpack/backpack.jsx
index 0d64307b7e52286367199c4ef17d5301037c8074..0f7b0b89f7ea02a0f0e4fd2b6472debc75f82784 100644
--- a/src/components/backpack/backpack.jsx
+++ b/src/components/backpack/backpack.jsx
@@ -17,7 +17,7 @@ const dragTypeMap = {
     sprite: DragConstants.BACKPACK_SPRITE
 };
 
-const Backpack = ({contents, dragOver, dropAreaRef, error, expanded, loading, onToggle}) => (
+const Backpack = ({contents, dragOver, dropAreaRef, error, expanded, loading, onToggle, onDelete}) => (
     <div className={styles.backpackContainer}>
         <div
             className={styles.backpackHeader}
@@ -43,7 +43,10 @@ const Backpack = ({contents, dragOver, dropAreaRef, error, expanded, loading, on
             )}
         </div>
         {expanded ? (
-            <div className={styles.backpackList}>
+            <div
+                className={styles.backpackList}
+                ref={dropAreaRef}
+            >
                 {error ? (
                     <div className={styles.statusMessage}>
                         <FormattedMessage
@@ -67,7 +70,6 @@ const Backpack = ({contents, dragOver, dropAreaRef, error, expanded, loading, on
                                 className={classNames(styles.backpackListInner, {
                                     [styles.dragOver]: dragOver
                                 })}
-                                ref={dropAreaRef}
                             >
                                 {contents.map(item => (
                                     <SpriteSelectorItem
@@ -76,10 +78,12 @@ const Backpack = ({contents, dragOver, dropAreaRef, error, expanded, loading, on
                                         details={item.name}
                                         dragPayload={item}
                                         dragType={dragTypeMap[item.type]}
+                                        id={item.id}
                                         key={item.id}
                                         name={item.type}
                                         selected={false}
                                         onClick={noop}
+                                        onDeleteButtonClick={onDelete}
                                     />
                                 ))}
                             </div>
@@ -111,6 +115,7 @@ Backpack.propTypes = {
     error: PropTypes.bool,
     expanded: PropTypes.bool,
     loading: PropTypes.bool,
+    onDelete: PropTypes.func,
     onToggle: PropTypes.func
 };
 
diff --git a/src/containers/backpack.jsx b/src/containers/backpack.jsx
index 8bf57d6f99e4d0a8cf37109a224700a208d56e6f..2d986fbe1073caa6fd74dabf6928f0c2fb65e708 100644
--- a/src/containers/backpack.jsx
+++ b/src/containers/backpack.jsx
@@ -2,7 +2,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import bindAll from 'lodash.bindall';
 import BackpackComponent from '../components/backpack/backpack.jsx';
-import {getBackpackContents, saveBackpackObject, soundPayload, costumePayload} from '../lib/backpack-api';
+import {getBackpackContents, saveBackpackObject, deleteBackpackObject, soundPayload, costumePayload} from '../lib/backpack-api';
 import DragConstants from '../lib/drag-constants';
 
 import {connect} from 'react-redux';
@@ -14,6 +14,7 @@ class Backpack extends React.Component {
         bindAll(this, [
             'handleDrop',
             'handleToggle',
+            'handleDelete',
             'refreshContents',
             'setRef'
         ]);
@@ -84,6 +85,14 @@ class Backpack extends React.Component {
             }))
             .then(this.refreshContents);
     }
+    handleDelete (id) {
+        deleteBackpackObject({
+            host: this.props.host,
+            token: this.props.token,
+            username: this.props.username,
+            id: id
+        }).then(this.refreshContents);
+    }
     refreshContents () {
         if (this.props.token && this.props.username) {
             this.setState({loading: true, error: false});
@@ -114,6 +123,7 @@ class Backpack extends React.Component {
                 error={this.state.error}
                 expanded={this.state.expanded}
                 loading={this.state.loading}
+                onDelete={this.handleDelete}
                 onToggle={this.props.host ? this.handleToggle : null}
             />
         );
diff --git a/src/lib/backpack-api.js b/src/lib/backpack-api.js
index 3b1a55e15c58ff6a50afc71939f94c997a455d0b..9a2b19e95979a57329cbcd87dac60b895fdb18bf 100644
--- a/src/lib/backpack-api.js
+++ b/src/lib/backpack-api.js
@@ -49,9 +49,28 @@ const saveBackpackObject = ({
     });
 });
 
+const deleteBackpackObject = ({
+    host,
+    username,
+    token,
+    id
+}) => new Promise((resolve, reject) => {
+    xhr({
+        method: 'DELETE',
+        uri: `${host}${username}/${id}`,
+        headers: {'x-token': token}
+    }, (error, response) => {
+        if (error || response.statusCode !== 200) {
+            return reject();
+        }
+        return resolve(response.body);
+    });
+});
+
 export {
     getBackpackContents,
     saveBackpackObject,
+    deleteBackpackObject,
     costumePayload,
     soundPayload
 };