   constructor: (@name) ->
     if @name not in @constructor.names
       throw new Error "Invalid name: '#{@name}'"
-    pieces = @name.split ' '
-    @version = parseInt pieces[0].replace 'IE', ''
+    @name = "#{@name}"
+    @version = @name.toUpperCase().replace(/^(?:IE|MS)(\d+|EDGE).*/, '$1')
     if @version not in @constructor.versions
       throw new Error "Invalid version: '#{@version}'"
-    @os = pieces.pop()
+    @os = @name.split(' ').pop()
     throw new Error "Invalid OS: '#{@os}'" unless @os in @constructor.oses
 
   # ### Validation Helpers

  fullOva: -> path.join @constructor.ievmsHome, @ova()

  # Generate the full URL to the modern.ie archive.
  url: -> 'http://virtualization.modern.ie/vhd/IEKitV1_Final/VirtualBox/OSX/' +
    @archive()

  # Retrieve and parse the virtual machine info from `VBoxManage showvminfo`.
  # If `E_ACCESSDENIED` is caught, the command will be retried up to 3 times

    'IE10 - Win7'
    'IE10 - Win8'
    'IE11 - Win7'
    'MSEdge - Win10'
  ]

  # A list of possible VM statuses.
