diff --git a/src/BeagleBone/IO_Object.jl b/src/BeagleBone/IO_Object.jl
index 408066957530ae08b9dd6c0e48a4545b16e5ba1a..76dcc8d11b35d6e0317e691b2bceeae184163eb7 100644
--- a/src/BeagleBone/IO_Object.jl
+++ b/src/BeagleBone/IO_Object.jl
@@ -46,3 +46,21 @@ const gpio_channels =[
   "gpio69"
   "gpio7"
 ]
+
+# These pins are exported with the Device Tree Overlay cape-universaln (default)
+const validPins = Dict(
+    "P9.22" => ("PWM0A", "pwmchip0", "0"),
+    "P9.21" => ("PWM0B", "pwmchip0", "1"),
+    "P9.14" => ("PWM1A", "pwmchip2", "0"),
+    "P9.16" => ("PWM1B", "pwmchip2", "1"),
+    "P8.19" => ("PWM2A", "pwmchip4", "0"),
+    "P8.13" => ("PWM2B", "pwmchip4", "1"),
+)
+
+# These pins are exported with the Device Tree Overlay cape-universala
+#    "P8.36" => ("PWM1A", "pwmchip1", "0"),
+#    "P9.29" => ("PWM0B", "pwmchip0", "1"),
+#    "P8.46" => ("PWM2B", "pwmchip2", "1")
+#    "P8.45" => ("PWM2A", "pwmchip2", "0"),
+#    "P8.34" => ("PWM1B", "pwmchip1", "1"),
+#    "P9.31" => ("PWM0A", "pwmchip0", "0"),
diff --git a/src/BeagleBone/PWM.jl b/src/BeagleBone/PWM.jl
index 1b91ae56733762fb34c97a50a1cd976d2c59ad71..fa9f0dde481dc1f4a63a438ab3157f360bfaf1c2 100644
--- a/src/BeagleBone/PWM.jl
+++ b/src/BeagleBone/PWM.jl
@@ -5,11 +5,12 @@ AM3359 chip, see p.182 in
 
     www.ti.com/product/AM3359/technicaldocuments
 """
+
 type PWM <: IO_Object
     i::Int32
     pin::String
     chip::String
-    filestreams::Array{IOStream,1} #1 = enable, 2 = period, 3 = duty_cycle, 4 = polarity
+    filestreams::Array{IOStream,1}
     function PWM(i::Int32)
         pins = collect(keys(validPins))
         (i < 1 || i > length(pins)) && error("Invalid PWM index: $i")
@@ -35,24 +36,6 @@ type PWM <: IO_Object
     end
 end
 
-# These pins are exported with the Device Tree Overlay cape-universaln (default)
-validPins = Dict(
-    "P9.22" => ("PWM0A", "pwmchip0", "0"),
-    "P9.21" => ("PWM0B", "pwmchip0", "1"),
-    "P9.14" => ("PWM1A", "pwmchip2", "0"),
-    "P9.16" => ("PWM1B", "pwmchip2", "1"),
-    "P8.19" => ("PWM2A", "pwmchip4", "0"),
-    "P8.13" => ("PWM2B", "pwmchip4", "1"),
-)
-
-# These pins are exported with the Device Tree Overlay cape-universala
-#    "P8.36" => ("PWM1A", "pwmchip1", "0"),
-#    "P9.29" => ("PWM0B", "pwmchip0", "1"),
-#    "P8.46" => ("PWM2B", "pwmchip2", "1")
-#    "P8.45" => ("PWM2A", "pwmchip2", "0"),
-#    "P8.34" => ("PWM1B", "pwmchip1", "1"),
-#    "P9.31" => ("PWM0A", "pwmchip0", "0"),
-
 """
     write!(pwm::PWM, args::Tuple{Int32,String}, debug::Bool=false)
 Writes an entry to an operation on the PWM, of the form args = (operation, entry).
@@ -98,3 +81,16 @@ function teardown!(pwm::PWM, debug::Bool=false)
         write(filename, export_number)
     return
 end
+
+"""
+  to_string(pwm::PWM,, debug::Bool=false)
+Generates a string representation of the GPIO device.
+"""
+function to_string(pwm::PWM, debug::Bool=false)
+  debug && return
+  message = "\nID: $(pwm.i)\n\nAvailable filestreams:\n"
+  for ii = 1:length(pwm.filestreams)
+    message = string(message, "  index=$(ii) - name=$(pwm.filestreams[ii].name) - write/read=$(iswritable(pwm.filestreams[ii]))/$(isreadable(pwm.filestreams[ii]))\n")
+  end
+  return message
+end
diff --git a/src/BeagleBone/SysLED.jl b/src/BeagleBone/SysLED.jl
index d5d26c1542bb779f1dac1ab1b9b175ce8b4983e1..f18c85004c963f9605bb2564ec1a47f756105421 100644
--- a/src/BeagleBone/SysLED.jl
+++ b/src/BeagleBone/SysLED.jl
@@ -46,21 +46,27 @@ end
 Closes all open filestreams for the SysLED 'led'.
 """
 function teardown(led::SysLED, debug::Bool=false)
-    debug && return
-    close(led.filestream)
+  debug && return
+  close(led.filestream)
 
-    if isdefined(:RUNNING_TESTS)
-      # Remove the dummy file system for testing
-      try
-        #println("$(led.basedir)/beaglebone:green:usr$(led.i-1)")
-        rm("$(led.basedir)/beaglebone:green:usr$(led.i-1)"; recursive=true)
-      catch
-        error("Could not remove the requested LED testfiles for channel beaglebone:green:usr$(led.i-1).")
-      end
+  if isdefined(:RUNNING_TESTS)
+    # Remove the dummy file system for testing
+    try
+      #println("$(led.basedir)/beaglebone:green:usr$(led.i-1)")
+      rm("$(led.basedir)/beaglebone:green:usr$(led.i-1)"; recursive=true)
+    catch
+      error("Could not remove the requested LED testfiles for channel beaglebone:green:usr$(led.i-1).")
     end
+  end
 end
 
-function export_led(i::Int32)
+"""
+    export_led(i::Int32, debug::Bool=false)
+Exports a dummy filesystem for testing the LED implementation
+"""
+function export_led(i::Int32, debug::Bool=false)
+  debug && return
+
   if isdefined(:RUNNING_TESTS)
     # Export a dummy file system for testing
     basedir = "$(pwd())/testfilesystem/leds"
@@ -80,3 +86,14 @@ function export_led(i::Int32)
   end
   return basedir
 end
+
+"""
+  to_string(led::SysLED, debug::Bool=false)
+Generates a string representation of the GPIO device.
+"""
+function to_string(led::SysLED, debug::Bool=false)
+  debug && return
+  message = "\nID: $(led.i)\n\nAvailable filestream:\n"
+  message = string(message, "  name=$(led.filestream.name) - write/read=$(iswritable(led.filestream))/$(isreadable(led.filestream))\n")
+  return message
+end
diff --git a/test/BeagleBone/GPIO_test.jl b/test/BeagleBone/GPIO_test.jl
index bbe9dae1356b188db7b574af897fcf173f9b8031..ec1a409244b6c3c4febacbc97df5e122b42205ed 100644
--- a/test/BeagleBone/GPIO_test.jl
+++ b/test/BeagleBone/GPIO_test.jl
@@ -7,40 +7,40 @@ using Base.Test
 
     @testset "Inialization/Termination" begin
         # Initialize three devices
-        initdev("gpio", 1)
+        initdev("gpio", Int32(1))
         @test sum(listdev()) == 1
 
-        initdev("gpio", 3)
+        initdev("gpio", Int32(3))
         @test sum(listdev()) == 2
 
-        initdev("gpio", 5)
+        initdev("gpio", Int32(5))
         @test sum(listdev()) == 3
 
         #printdev("gpio", 3)
 
         # Attempt to initialize a device which has already been initialized
-        @test_throws ErrorException initdev("gpio", 1)
-        @test_throws ErrorException initdev("gpio", 3)
-        @test_throws ErrorException initdev("gpio", 5)
+        @test_throws ErrorException initdev("gpio", Int32(1))
+        @test_throws ErrorException initdev("gpio", Int32(3))
+        @test_throws ErrorException initdev("gpio", Int32(5))
 
         # Attempt to initialize a device with a very high index (no matching channel)
-        @test_throws ErrorException initdev("gpio", 1000)
+        @test_throws ErrorException initdev("gpio", Int32(1000))
 
         # Attempt to remove devices which have not been initialized
-        @test_throws ErrorException closedev("gpio", 2)
-        @test_throws ErrorException closedev("gpio", 4)
-        @test_throws ErrorException closedev("gpio", 6)
+        @test_throws ErrorException closedev("gpio", Int32(2))
+        @test_throws ErrorException closedev("gpio", Int32(4))
+        @test_throws ErrorException closedev("gpio", Int32(6))
 
         #printdev("gpio", 3)
 
         # Remove devices from TOC
-        closedev("gpio", 1)
+        closedev("gpio", Int32(1))
         @test sum(listdev()) == 2
 
-        closedev("gpio", 3)
+        closedev("gpio", Int32(3))
         @test sum(listdev()) == 1
 
-        closedev("gpio", 5)
+        closedev("gpio", Int32(5))
         @test sum(listdev()) == 0
 
     end
@@ -48,45 +48,45 @@ using Base.Test
     @testset "Read/Write" begin
 
         # Fixture
-        device = initdev("gpio", 1)
+        device = initdev("gpio", Int32(1))
 
         # Test that an exception is thrown when an invalid operation is given
         # supported operations are 1,2,3
-        @test_throws ErrorException write!(device, (0, "something"))
-        @test_throws ErrorException write!(device, (4, "something"))
+        @test_throws ErrorException write!(device, (Int32(0), "something"))
+        @test_throws ErrorException write!(device, (Int32(4), "something"))
 
         # Test that exceptions are thrown for each individual operation
-        @test_throws ErrorException write!(device, (1, "bad_entry"))
-        @test_throws ErrorException write!(device, (2, "bad_entry"))
-        @test_throws ErrorException write!(device, (3, "bad_entry"))
+        @test_throws ErrorException write!(device, (Int32(1), "bad_entry"))
+        @test_throws ErrorException write!(device, (Int32(2), "bad_entry"))
+        @test_throws ErrorException write!(device, (Int32(3), "bad_entry"))
 
         # Test operation 1
-        write!(device, (1, "1"))
-        @test read(device, 1) == "1"
-        write!(device, (1, "0"))
-        @test read(device, 1) == "0"
-        write!(device, (1, "1"))
-        @test read(device, 1) == "1"
-        write!(device, (1, "0"))
-        @test read(device, 1) == "0"
-
-        write!(device, (2, "in"))
-        @test read(device, 2) == "in"
-        write!(device, (2, "out"))
-        @test read(device, 2) == "out"
-        write!(device, (2, "in"))
-        @test read(device, 2) == "in"
-        write!(device, (2, "out"))
-        @test read(device, 2) == "out"
+        write!(device, (Int32(1), "1"))
+        @test read(device, Int32(1)) == "1"
+        write!(device, (Int32(1), "0"))
+        @test read(device, Int32(1)) == "0"
+        write!(device, (Int32(1), "1"))
+        @test read(device, Int32(1)) == "1"
+        write!(device, (Int32(1), "0"))
+        @test read(device, Int32(1)) == "0"
+
+        write!(device, (Int32(2), "in"))
+        @test read(device, Int32(2)) == "in"
+        write!(device, (Int32(2), "out"))
+        @test read(device, Int32(2)) == "out"
+        write!(device, (Int32(2), "in"))
+        @test read(device, Int32(2)) == "in"
+        write!(device, (Int32(2), "out"))
+        @test read(device, Int32(2)) == "out"
 
         # Test operation 3
-        @test_throws ErrorException write!(device, (3, "none"))
-        @test_throws ErrorException write!(device, (3, "rising"))
-        @test_throws ErrorException write!(device, (3, "falling"))
-        @test_throws ErrorException write!(device, (3, "both"))
+        @test_throws ErrorException write!(device, (Int32(3), "none"))
+        @test_throws ErrorException write!(device, (Int32(3), "rising"))
+        @test_throws ErrorException write!(device, (Int32(3), "falling"))
+        @test_throws ErrorException write!(device, (Int32(3), "both"))
 
         # Close Gpio
-        closedev("gpio", 1)
+        closedev("gpio", Int32(1))
      end
 
     @testset "All channels" begin
@@ -96,9 +96,9 @@ using Base.Test
         # Configure the GPIO for output usage
         devices = []
         for ii = 1:length(gpio_channels)
-            device = initdev("gpio", ii)
+            device = initdev("gpio", Int32(ii))
             # Operation 2 -> in/out, set out
-            write!(device, (2, "out"))
+            write!(device, (Int32(2), "out"))
             # Append to list
             append!(devices, [device])
         end
@@ -107,15 +107,15 @@ using Base.Test
         for i = 1:10
             for ii = 1:length(gpio_channels)
                 state = "$(i%2)"
-                write!(devices[ii], (1, state))
-                @test read(devices[ii], 1) == state
+                write!(devices[ii], (Int32(1), state))
+                @test read(devices[ii], Int32(1)) == state
             end
             sleep(0.10)
         end
 
         # Closes all devices
         for ii = 1:length(gpio_channels)
-            closedev("gpio", ii)
+            closedev("gpio", Int32(ii))
         end
     end
 end
diff --git a/test/BeagleBone/SYS_LED_test.jl b/test/BeagleBone/SYS_LED_test.jl
index 6109ec7add694ec4811d1d6c01a9e40e5c00617f..d513ddfbafc8bf0691064688b068821bb5c35fa9 100644
--- a/test/BeagleBone/SYS_LED_test.jl
+++ b/test/BeagleBone/SYS_LED_test.jl
@@ -7,49 +7,48 @@ using Base.Test
 
     @testset "Inialization/Termination" begin
         # Initialize three devices
-        initdev("sysled", 1)
+        initdev("sysled", Int32(1))
         @test sum(listdev()) == 1
 
-        initdev("sysled", 3)
+        initdev("sysled", Int32(3))
         @test sum(listdev()) == 2
 
         # Attempt to initialize a device which has already been initialized
-        @test_throws ErrorException initdev("sysled", 1)
-        @test_throws ErrorException initdev("sysled", 3)
+        @test_throws ErrorException initdev("sysled", Int32(1))
+        @test_throws ErrorException initdev("sysled", Int32(3))
 
         # Attempt to initialize a device with a very high index (no matching channel)
-        @test_throws ErrorException initdev("sysled", 1000)
+        @test_throws ErrorException initdev("sysled", Int32(1000))
 
         # Attempt to remove devices which have not been initialized
-        @test_throws ErrorException closedev("sysled", 2)
-        @test_throws ErrorException closedev("sysled", 4)
+        @test_throws ErrorException closedev("sysled", Int32(2))
+        @test_throws ErrorException closedev("sysled", Int32(4))
 
         # Remove devices from TOC
-        closedev("sysled", 1)
+        closedev("sysled", Int32(1))
         @test sum(listdev()) == 1
 
-        closedev("sysled", 3)
+        closedev("sysled", Int32(3))
         @test sum(listdev()) == 0
     end
 
     @testset "Error Handling" begin
 
-        device = initdev("sysled", 1)
+        device = initdev("sysled", Int32(1))
 
         # Test that an exception is thrown when a faulty ID is given
         @test_throws ErrorException write!(device, "bad_entry")
 
         # Close device
-        closedev("sysled", 1)
+        closedev("sysled", Int32(1))
     end
 
     @testset "IO Communication" begin
         # Instanciate all possible leds and perform 10 read/write commands
-        println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
-        device1 = initdev("sysled", 1)
-        device2 = initdev("sysled", 2)
-        device3 = initdev("sysled", 3)
-        device4 = initdev("sysled", 4)
+        device1 = initdev("sysled", Int32(1))
+        device2 = initdev("sysled", Int32(2))
+        device3 = initdev("sysled", Int32(3))
+        device4 = initdev("sysled", Int32(4))
 
         for i = 1:10
             stateA = "$(i%2)"
@@ -65,10 +64,9 @@ using Base.Test
             sleep(0.1)
         end
 
-        println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
-        closedev("sysled", 1)
-        closedev("sysled", 2)
-        closedev("sysled", 3)
-        closedev("sysled", 4)
+        closedev("sysled", Int32(1))
+        closedev("sysled", Int32(2))
+        closedev("sysled", Int32(3))
+        closedev("sysled", Int32(4))
     end
 end