The usual approach is to use a singleton object and attach all those functions and variables to it. You might try something like this, for example. // mouse input stuff var mouseInput = {}; // grab (start dragging) a node mouseInput.grab = function(node, x, y) { this.activeNode = node; node.style.position = 'relative'; node.style.left = '0px'; node.style.top = '0px'; node.style.zIndex = '10'; this.lastX = x; this.lastY = y; this.lastLeft = 0; this.lastTop = 0; }; // drag a node mouseInput.drag = function(x, y) { if (!this.activeNode) return; this.lastLeft -= (this.lastX - x); this.lastTop -= (this.lastY - y); this.activeNode.style.left = this.lastLeft + 'px'; this.activeNode.style.top = this.lastTop + 'px'; this.lastX = x; this.lastY = y; this.lastLeft = newLeft; this.lastTop = newTop; }; // drop (stop dragging) a node mouseInput.drop = function(x, y) { if (!this.activeNode) return; this.activeNode.style.zIndex = null; this.activeNode.style.left = null; this.activeNode.style.top = null; this.activeNode.style.position = null; this.activeNode = null; }; If you prefer, every `this` can be replaced with `mouseInput`.