diff --git a/src/components/library-item/library-item.jsx b/src/components/library-item/library-item.jsx
index c9ba6ea553ff2476c3e74fe4c28d5aa0c112e59d..11049652912a0cc9024fb5ca4985a5d06afcd913 100644
--- a/src/components/library-item/library-item.jsx
+++ b/src/components/library-item/library-item.jsx
@@ -1,4 +1,3 @@
-import bindAll from 'lodash.bindall';
 import {FormattedMessage} from 'react-intl';
 import PropTypes from 'prop-types';
 import React from 'react';
@@ -11,25 +10,6 @@ import bluetoothIconURL from './bluetooth.svg';
 import internetConnectionIconURL from './internet-connection.svg';
 
 class LibraryItemComponent extends React.PureComponent {
-    constructor (props) {
-        super(props);
-        bindAll(this, [
-            'handleClick',
-            'handleKeyPress'
-        ]);
-    }
-    handleClick (e) {
-        if (!this.props.disabled) {
-            this.props.onSelect(this.props.id);
-        }
-        e.preventDefault();
-    }
-    handleKeyPress (e) {
-        if (e.key === ' ' || e.key === 'Enter') {
-            e.preventDefault();
-            this.props.onSelect(this.props.id);
-        }
-    }
     render () {
         return this.props.featured ? (
             <div
@@ -131,9 +111,9 @@ class LibraryItemComponent extends React.PureComponent {
                 role="button"
                 tabIndex="0"
                 onBlur={this.props.onBlur}
-                onClick={this.handleClick}
+                onClick={this.props.onClick}
                 onFocus={this.props.onFocus}
-                onKeyPress={this.handleKeyPress}
+                onKeyPress={this.props.onKeyPress}
                 onMouseEnter={this.props.onMouseEnter}
                 onMouseLeave={this.props.onMouseLeave}
             >
@@ -164,18 +144,18 @@ LibraryItemComponent.propTypes = {
     featured: PropTypes.bool,
     hidden: PropTypes.bool,
     iconURL: PropTypes.string,
-    id: PropTypes.number.isRequired,
     insetIconURL: PropTypes.string,
     internetConnectionRequired: PropTypes.bool,
     name: PropTypes.oneOfType([
         PropTypes.string,
         PropTypes.node
     ]),
-    onBlur: PropTypes.func,
-    onFocus: PropTypes.func,
+    onBlur: PropTypes.func.isRequired,
+    onClick: PropTypes.func.isRequired,
+    onFocus: PropTypes.func.isRequired,
+    onKeyPress: PropTypes.func.isRequired,
     onMouseEnter: PropTypes.func.isRequired,
-    onMouseLeave: PropTypes.func.isRequired,
-    onSelect: PropTypes.func.isRequired
+    onMouseLeave: PropTypes.func.isRequired
 };
 
 LibraryItemComponent.defaultProps = {
diff --git a/src/components/library/library.jsx b/src/components/library/library.jsx
index 9e43ddd6a9580e42611ce72d7d18607b71d6eb94..8073b0f4928db5acd6f4d80ab59e973cd08c0c69 100644
--- a/src/components/library/library.jsx
+++ b/src/components/library/library.jsx
@@ -68,10 +68,10 @@ class LibraryComponent extends React.Component {
             selectedTag: tag.toLowerCase()
         });
     }
-    handleMouseEnter (id) { // no longer used for sprite costume switching, only for other libraries
+    handleMouseEnter (id) {
         if (this.props.onItemMouseEnter) this.props.onItemMouseEnter(this.getFilteredData()[id]);
     }
-    handleMouseLeave (id) { // no longer used for sprite costume switching, only for other libraries
+    handleMouseLeave (id) {
         if (this.props.onItemMouseLeave) this.props.onItemMouseLeave(this.getFilteredData()[id]);
     }
     handleFilterChange (event) {
diff --git a/src/containers/library-item.jsx b/src/containers/library-item.jsx
index 7f81b4389268ab7acf267ab9057c699249ed593b..6177b916fd69c00107decb03b1d0de13073194ae 100644
--- a/src/containers/library-item.jsx
+++ b/src/containers/library-item.jsx
@@ -10,7 +10,9 @@ class LibraryItem extends React.PureComponent {
         super(props);
         bindAll(this, [
             'handleBlur',
+            'handleClick',
             'handleFocus',
+            'handleKeyPress',
             'handleMouseEnter',
             'handleMouseLeave',
             'rotateIcon',
@@ -28,9 +30,21 @@ class LibraryItem extends React.PureComponent {
     handleBlur (id) {
         this.handleMouseLeave(id);
     }
+    handleClick (e) {
+        if (!this.props.disabled) {
+            this.props.onSelect(this.props.id);
+        }
+        e.preventDefault();
+    }
     handleFocus (id) {
         this.handleMouseEnter(id);
     }
+    handleKeyPress (e) {
+        if (e.key === ' ' || e.key === 'Enter') {
+            e.preventDefault();
+            this.props.onSelect(this.props.id);
+        }
+    }
     handleMouseEnter () {
         this.props.onMouseEnter(this.props.id);
         if (this.props.icons && this.props.icons.length) {
@@ -92,10 +106,11 @@ class LibraryItem extends React.PureComponent {
                 internetConnectionRequired={this.props.internetConnectionRequired}
                 name={this.props.name}
                 onBlur={this.handleBlur}
+                onClick={this.handleClick}
                 onFocus={this.handleFocus}
+                onKeyPress={this.handleKeyPress}
                 onMouseEnter={this.handleMouseEnter}
                 onMouseLeave={this.handleMouseLeave}
-                onSelect={this.props.onSelect}
             />
         );
     }
diff --git a/test/integration/costumes.test.js b/test/integration/costumes.test.js
index 5181c429a6b69cb0298f9eb677787c672c3ac8dd..ad55ce472b71c8c75a1f3ebdaee26d4aff412c24 100644
--- a/test/integration/costumes.test.js
+++ b/test/integration/costumes.test.js
@@ -33,7 +33,9 @@ describe('Working with costumes', () => {
         const el = await findByXpath("//input[@placeholder='Search']");
         await el.sendKeys('abb');
         await clickText('Abby-a'); // Should close the modal, then click the costumes in the selector
+        await new Promise(resolve => setTimeout(resolve, 5000));
         await findByXpath("//input[@value='Abby-a']"); // Should show editor for new costume
+        await new Promise(resolve => setTimeout(resolve, 5000));
         const logs = await getLogs();
         await expect(logs).toEqual([]);
     });