     }
   }
   
-  public func install() {
+  public func install() throws -> Void {
     if !isValid {
       log.error("can't install invalid keyboard")
-      return
+      throw KMPError.invalidPackage
     }
     
     do {

                                              withIntermediateDirectories: true)
    } catch {
      log.error("Could not create dir for download: \(error)")
      return
    }
    
    for keyboard in installableKeyboards {

                                           to: item[1] as! URL)
        } catch {
          log.error("Error saving the download: \(error)")
          throw KMPError.copyFiles
        }
      }
      Manager.shared.addKeyboard(keyboard)
