diff --git a/VERSION b/VERSION
index d183d4a..2a0970c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.16.0
\ No newline at end of file
+0.16.1
diff --git a/meframe.go b/meframe.go
index 70edf4f..d53a669 100644
--- a/meframe.go
+++ b/meframe.go
@@ -286,7 +286,7 @@
 	WindowSize   uint8 // Window size - 1
 	ImageSize    uint32
 	CircuitPacks []uint16 // slot (upper 8 bits) and instance (lower 8 bits)
-	Results      []downloadResults
+	Results      []DownloadResults
 }
 
 var defaultSoftwareOptions = SoftwareOptions{
diff --git a/messagetypes.go b/messagetypes.go
index 40923ab..42a0d42 100644
--- a/messagetypes.go
+++ b/messagetypes.go
@@ -2007,12 +2007,12 @@
 
 /////////////////////////////////////////////////////////////////////////////
 //
-type downloadResults struct {
+type DownloadResults struct {
 	ManagedEntityID uint16 // ME ID of software image entity instance (slot number plus instance 0..1 or 2..254 vendor-specific)
 	Result          me.Results
 }
 
-func (dr *downloadResults) String() string {
+func (dr *DownloadResults) String() string {
 	return fmt.Sprintf("ME: %v (%#x), Results: %d (%v)", dr.ManagedEntityID, dr.ManagedEntityID,
 		dr.Result, dr.Result)
 }
@@ -2022,7 +2022,7 @@
 	Result            me.Results
 	WindowSize        byte // Window Size -1
 	NumberOfInstances byte
-	MeResults         []downloadResults
+	MeResults         []DownloadResults
 }
 
 func (omci *StartSoftwareDownloadResponse) String() string {
@@ -2065,7 +2065,7 @@
 		return errors.New(msg)
 	}
 	if omci.NumberOfInstances > 0 {
-		omci.MeResults = make([]downloadResults, omci.NumberOfInstances)
+		omci.MeResults = make([]DownloadResults, omci.NumberOfInstances)
 
 		for index := 0; index < int(omci.NumberOfInstances); index++ {
 			omci.MeResults[index].ManagedEntityID = binary.BigEndian.Uint16(data[7+(index*3):])
@@ -2395,7 +2395,7 @@
 	MeBasePacket      // Note: EntityInstance for software download is two specific values
 	Result            me.Results
 	NumberOfInstances byte
-	MeResults         []downloadResults
+	MeResults         []DownloadResults
 }
 
 func (omci *EndSoftwareDownloadResponse) String() string {
@@ -2437,7 +2437,7 @@
 		return errors.New(msg)
 	}
 	if omci.NumberOfInstances > 0 {
-		omci.MeResults = make([]downloadResults, omci.NumberOfInstances)
+		omci.MeResults = make([]DownloadResults, omci.NumberOfInstances)
 
 		for index := 0; index < int(omci.NumberOfInstances); index++ {
 			omci.MeResults[index].ManagedEntityID = binary.BigEndian.Uint16(data[6+(index*3):])
