   mine = game.plugins.load 'mine', {
     reach: reach
     timeToMine: (target) =>
+      # the innate difficulty of mining this block
       blockID = game.getBlock(target.voxel)
       blockName = registry.getBlockName(blockID)
       hardness = registry.getBlockProps(blockName)?.hardness
-
+      hardness ?= 9
+
+      # effectiveness of currently held tool, shortens mining time
       heldItem = inventoryToolbar.held()
-
-      return hardness || 9
+      speed = 1.0
+      speed = registry.getItemProps(heldItem?.item)?.speed ? 1.0
+      finalTimeToMine = Math.max(hardness / speed, 0)
+      # TODO: more complex mining 'classes', e.g. shovel against dirt, axe against wood
+
+      return finalTimeToMine
 
     instaMine: false
     progressTexturesPrefix: 'destroy_stage_'

  creativeInventoryArray = []
  for props in registry.blockProps
    creativeInventoryArray.push(new ItemPile(props.name, Infinity)) if props.name?
  survivalInventoryArray = []

  ever(document.body).on 'keydown', (ev) =>

      game.plugins.toggle 'oculus'
    else if ev.keyCode == 'O'.charCodeAt(0)
      home(avatar)
    else if ev.keyCode == 'P'.charCodeAt(0)
      inventoryToolbar.give(new ItemPile('pickaxeDiamond'))
      inventoryToolbar.refresh()
      console.log 'gave diamond pickaxe' # until we have crafting
    else if ev.keyCode == 'L'.charCodeAt(0)
      inventoryToolbar.give(new ItemPile('pickaxeWood'))
      inventoryToolbar.refresh()
      console.log 'gave wooden pickaxe'

    else if ev.keyCode == 'C'.charCodeAt(0)
      # TODO: add gamemode event? for plugins to handle instead of us
      if game.mode == 'survival'
