diff --git a/docs/build/index.md b/docs/build/index.md
index 8dd068005681547ac6be91ff32064044bcc30f02..ddd957b0faf8eb3551cac6b4e046969214f8155d 100644
--- a/docs/build/index.md
+++ b/docs/build/index.md
@@ -34,4 +34,33 @@
 
 ## Documentation Index
 
+- [`LabConnections.BeagleBone.Debug`](lib/io_devices.md#LabConnections.BeagleBone.Debug)
+- [`LabConnections.BeagleBone.GPIO`](lib/io_devices.md#LabConnections.BeagleBone.GPIO)
+- [`LabConnections.BeagleBone.IO_Object`](lib/io_devices.md#LabConnections.BeagleBone.IO_Object)
+- [`LabConnections.BeagleBone.PWM`](lib/io_devices.md#LabConnections.BeagleBone.PWM)
+- [`LabConnections.BeagleBone.SysLED`](lib/io_devices.md#LabConnections.BeagleBone.SysLED)
+- [`Base.read`](lib/functions.md#Base.read)
+- [`Base.read`](lib/functions.md#Base.read)
+- [`Base.read`](lib/functions.md#Base.read)
+- [`LabConnections.BeagleBone.assert_pwm_write`](lib/functions.md#LabConnections.BeagleBone.assert_pwm_write-Tuple{Int32,String})
+- [`LabConnections.BeagleBone.bbparse`](lib/functions.md#LabConnections.BeagleBone.bbparse-Tuple{Tuple,Any})
+- [`LabConnections.BeagleBone.bbparse`](lib/functions.md#LabConnections.BeagleBone.bbparse-Tuple{Any})
+- [`LabConnections.BeagleBone.closedev`](lib/functions.md#LabConnections.BeagleBone.closedev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.export_gpio`](lib/functions.md#LabConnections.BeagleBone.export_gpio-Tuple{Int32})
+- [`LabConnections.BeagleBone.export_led`](lib/functions.md#LabConnections.BeagleBone.export_led)
+- [`LabConnections.BeagleBone.export_pwm`](lib/functions.md#LabConnections.BeagleBone.export_pwm-Tuple{Int32})
+- [`LabConnections.BeagleBone.getdev`](lib/functions.md#LabConnections.BeagleBone.getdev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.initdev`](lib/functions.md#LabConnections.BeagleBone.initdev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.listdev`](lib/functions.md#LabConnections.BeagleBone.listdev-Tuple{})
+- [`LabConnections.BeagleBone.printdev`](lib/functions.md#LabConnections.BeagleBone.printdev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.run_server`](lib/functions.md#LabConnections.BeagleBone.run_server)
+- [`LabConnections.BeagleBone.teardown`](lib/functions.md#LabConnections.BeagleBone.teardown)
+- [`LabConnections.BeagleBone.teardown`](lib/functions.md#LabConnections.BeagleBone.teardown)
+- [`LabConnections.BeagleBone.teardown`](lib/functions.md#LabConnections.BeagleBone.teardown)
+- [`LabConnections.BeagleBone.to_string`](lib/functions.md#LabConnections.BeagleBone.to_string)
+- [`LabConnections.BeagleBone.to_string`](lib/functions.md#LabConnections.BeagleBone.to_string)
+- [`LabConnections.BeagleBone.to_string`](lib/functions.md#LabConnections.BeagleBone.to_string)
+- [`LabConnections.BeagleBone.write!`](lib/functions.md#LabConnections.BeagleBone.write!)
+- [`LabConnections.BeagleBone.write!`](lib/functions.md#LabConnections.BeagleBone.write!)
+- [`LabConnections.BeagleBone.write!`](lib/functions.md#LabConnections.BeagleBone.write!)
 
diff --git a/docs/build/lib/functions.md b/docs/build/lib/functions.md
index ae02010fd1136b4ca12ccaed1d1dccb8636707f1..7cf7ae807a57f77682efd2438a1e519e3c213a66 100644
--- a/docs/build/lib/functions.md
+++ b/docs/build/lib/functions.md
@@ -1,12 +1,252 @@
+- [`Base.read`](functions.md#Base.read)
+- [`Base.read`](functions.md#Base.read)
+- [`Base.read`](functions.md#Base.read)
+- [`LabConnections.BeagleBone.assert_pwm_write`](functions.md#LabConnections.BeagleBone.assert_pwm_write-Tuple{Int32,String})
+- [`LabConnections.BeagleBone.bbparse`](functions.md#LabConnections.BeagleBone.bbparse-Tuple{Tuple,Any})
+- [`LabConnections.BeagleBone.bbparse`](functions.md#LabConnections.BeagleBone.bbparse-Tuple{Any})
+- [`LabConnections.BeagleBone.closedev`](functions.md#LabConnections.BeagleBone.closedev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.export_gpio`](functions.md#LabConnections.BeagleBone.export_gpio-Tuple{Int32})
+- [`LabConnections.BeagleBone.export_led`](functions.md#LabConnections.BeagleBone.export_led)
+- [`LabConnections.BeagleBone.export_pwm`](functions.md#LabConnections.BeagleBone.export_pwm-Tuple{Int32})
+- [`LabConnections.BeagleBone.getdev`](functions.md#LabConnections.BeagleBone.getdev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.initdev`](functions.md#LabConnections.BeagleBone.initdev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.listdev`](functions.md#LabConnections.BeagleBone.listdev-Tuple{})
+- [`LabConnections.BeagleBone.printdev`](functions.md#LabConnections.BeagleBone.printdev-Tuple{String,Int32})
+- [`LabConnections.BeagleBone.run_server`](functions.md#LabConnections.BeagleBone.run_server)
+- [`LabConnections.BeagleBone.teardown`](functions.md#LabConnections.BeagleBone.teardown)
+- [`LabConnections.BeagleBone.teardown`](functions.md#LabConnections.BeagleBone.teardown)
+- [`LabConnections.BeagleBone.teardown`](functions.md#LabConnections.BeagleBone.teardown)
+- [`LabConnections.BeagleBone.to_string`](functions.md#LabConnections.BeagleBone.to_string)
+- [`LabConnections.BeagleBone.to_string`](functions.md#LabConnections.BeagleBone.to_string)
+- [`LabConnections.BeagleBone.to_string`](functions.md#LabConnections.BeagleBone.to_string)
+- [`LabConnections.BeagleBone.write!`](functions.md#LabConnections.BeagleBone.write!)
+- [`LabConnections.BeagleBone.write!`](functions.md#LabConnections.BeagleBone.write!)
+- [`LabConnections.BeagleBone.write!`](functions.md#LabConnections.BeagleBone.write!)
 
 
 <a id='Available-functions-1'></a>
 
 # Available functions
 
+<a id='LabConnections.BeagleBone.run_server' href='#LabConnections.BeagleBone.run_server'>#</a>
+**`LabConnections.BeagleBone.run_server`** &mdash; *Function*.
 
+
+
+```
+run_server(port=2001; debug=false)
+```
+
+Run a server on `port` that listens for commands from computer Optional debug keyword disables blinking system leds
+
+<a id='Base.read' href='#Base.read'>#</a>
+**`Base.read`** &mdash; *Function*.
+
+
+
+```
+l = read(led::SysLED, debug::Bool=false)
+```
+
+Reads the current brightness value from the LED 'SysLED'.
+
+<a id='Base.read' href='#Base.read'>#</a>
+**`Base.read`** &mdash; *Function*.
+
+
+
+l = read(gpio::GPIO, operation::Int32, debug::Bool=false) Reads the current value from an operation on a GPIO.
+
+<a id='Base.read' href='#Base.read'>#</a>
+**`Base.read`** &mdash; *Function*.
+
+
+
+l = read(pwm::PWM, operation::Int32, debug::Bool=false) Reads the current value from an operation on a GPIO.
+
+<a id='LabConnections.BeagleBone.assert_pwm_write-Tuple{Int32,String}' href='#LabConnections.BeagleBone.assert_pwm_write-Tuple{Int32,String}'>#</a>
+**`LabConnections.BeagleBone.assert_pwm_write`** &mdash; *Method*.
+
+
+
+```
+assert_pwm_write(operation::Int32, entry::String)
+```
+
+Assertsion for the PWM input data
+
+<a id='LabConnections.BeagleBone.bbparse-Tuple{Any}' href='#LabConnections.BeagleBone.bbparse-Tuple{Any}'>#</a>
+**`LabConnections.BeagleBone.bbparse`** &mdash; *Method*.
+
+
+
+```
+bbparse(cmd)
+```
+
+Parse and execute the command `cmd`
+
+<a id='LabConnections.BeagleBone.bbparse-Tuple{Tuple,Any}' href='#LabConnections.BeagleBone.bbparse-Tuple{Tuple,Any}'>#</a>
+**`LabConnections.BeagleBone.bbparse`** &mdash; *Method*.
+
+
+
+```
+bbparse(l::Tuple, sock)
+```
+
+Parse input on the form `l=(iswrite, ndev, cmd1, cmd2, ..., cmdn)` where if `iswrite`     `cmdi = (devname, id, val)`     and if not `iswrite`     `cmdi = (devname, id)`
+
+and send back on socket (vals, timestamps)
+
+<a id='LabConnections.BeagleBone.closedev-Tuple{String,Int32}' href='#LabConnections.BeagleBone.closedev-Tuple{String,Int32}'>#</a>
+**`LabConnections.BeagleBone.closedev`** &mdash; *Method*.
+
+
+
+closedev(dev_name::String, i::Int32) Closes down a currently active device of type 'dev_name' at index 'i' on the BeagleBone, and removes it from the dict of currently active devices.
+
+<a id='LabConnections.BeagleBone.export_gpio-Tuple{Int32}' href='#LabConnections.BeagleBone.export_gpio-Tuple{Int32}'>#</a>
+**`LabConnections.BeagleBone.export_gpio`** &mdash; *Method*.
+
+
+
+export_gpio(i::Int32, debug::Bool=false) Export the GPIO file system, either for real-time or testing usecases.
+
+<a id='LabConnections.BeagleBone.export_led' href='#LabConnections.BeagleBone.export_led'>#</a>
+**`LabConnections.BeagleBone.export_led`** &mdash; *Function*.
+
+
+
+```
+export_led(i::Int32, debug::Bool=false)
+```
+
+Exports a dummy filesystem for testing the LED implementation
+
+<a id='LabConnections.BeagleBone.export_pwm-Tuple{Int32}' href='#LabConnections.BeagleBone.export_pwm-Tuple{Int32}'>#</a>
+**`LabConnections.BeagleBone.export_pwm`** &mdash; *Method*.
+
+
+
+export_gpio(i::Int32, debug::Bool=false) Export the GPIO file system, either for real-time or testing usecases.
+
+<a id='LabConnections.BeagleBone.getdev-Tuple{String,Int32}' href='#LabConnections.BeagleBone.getdev-Tuple{String,Int32}'>#</a>
+**`LabConnections.BeagleBone.getdev`** &mdash; *Method*.
+
+
+
+```
+dev = getdev(dev_name::String, i::Int32)
 ```
-initdev
-closedev
+
+Retrieves the active device of type `dev_name` at index 'i'
+
+<a id='LabConnections.BeagleBone.initdev-Tuple{String,Int32}' href='#LabConnections.BeagleBone.initdev-Tuple{String,Int32}'>#</a>
+**`LabConnections.BeagleBone.initdev`** &mdash; *Method*.
+
+
+
+active_device = initdev(dev_name::String, i:Int32) Initializes a new device of type 'dev_name' at index 'i' on the BeagleBone, and adds it to the dict of currently active devices. Returns the initialized device 'active_device'.
+
+<a id='LabConnections.BeagleBone.listdev-Tuple{}' href='#LabConnections.BeagleBone.listdev-Tuple{}'>#</a>
+**`LabConnections.BeagleBone.listdev`** &mdash; *Method*.
+
+
+
+```
+message = listdev()
+```
+
+Lists all the active devices as an insidence array for testing
+
+<a id='LabConnections.BeagleBone.printdev-Tuple{String,Int32}' href='#LabConnections.BeagleBone.printdev-Tuple{String,Int32}'>#</a>
+**`LabConnections.BeagleBone.printdev`** &mdash; *Method*.
+
+
+
+```
+message = printdev()
+```
+
+Prints all the active devices and writes out specifics of a single devices
+
+<a id='LabConnections.BeagleBone.teardown' href='#LabConnections.BeagleBone.teardown'>#</a>
+**`LabConnections.BeagleBone.teardown`** &mdash; *Function*.
+
+
+
+```
+teardown!(pwd::PWM)
+```
+
+Closes all open streams on the PWM, and unexports it from the file system
+
+<a id='LabConnections.BeagleBone.teardown' href='#LabConnections.BeagleBone.teardown'>#</a>
+**`LabConnections.BeagleBone.teardown`** &mdash; *Function*.
+
+
+
+teardown(gpio::GPIO, debug::Bool=false) Closes all open streams on the GPIO, and unexports it from the file system.
+
+<a id='LabConnections.BeagleBone.teardown' href='#LabConnections.BeagleBone.teardown'>#</a>
+**`LabConnections.BeagleBone.teardown`** &mdash; *Function*.
+
+
+
+```
+teardown(led::SysLED, debug::Bool=false)
 ```
 
+Closes all open filestreams for the SysLED 'led'.
+
+<a id='LabConnections.BeagleBone.to_string' href='#LabConnections.BeagleBone.to_string'>#</a>
+**`LabConnections.BeagleBone.to_string`** &mdash; *Function*.
+
+
+
+to_string(pwm::PWM,, debug::Bool=false) Generates a string representation of the GPIO device.
+
+<a id='LabConnections.BeagleBone.to_string' href='#LabConnections.BeagleBone.to_string'>#</a>
+**`LabConnections.BeagleBone.to_string`** &mdash; *Function*.
+
+
+
+to_string(gpio::GPIO, debug::Bool=false) Generates a string representation of the GPIO device.
+
+<a id='LabConnections.BeagleBone.to_string' href='#LabConnections.BeagleBone.to_string'>#</a>
+**`LabConnections.BeagleBone.to_string`** &mdash; *Function*.
+
+
+
+to_string(led::SysLED, debug::Bool=false) Generates a string representation of the GPIO device.
+
+<a id='LabConnections.BeagleBone.write!' href='#LabConnections.BeagleBone.write!'>#</a>
+**`LabConnections.BeagleBone.write!`** &mdash; *Function*.
+
+
+
+```
+write!(led::SysLED, val::Bool, debug::Bool=false)
+```
+
+Turns the LED 'SysLed' on/off for val = true/false respectively.
+
+<a id='LabConnections.BeagleBone.write!' href='#LabConnections.BeagleBone.write!'>#</a>
+**`LabConnections.BeagleBone.write!`** &mdash; *Function*.
+
+
+
+```
+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).
+
+<a id='LabConnections.BeagleBone.write!' href='#LabConnections.BeagleBone.write!'>#</a>
+**`LabConnections.BeagleBone.write!`** &mdash; *Function*.
+
+
+
+write!(gpio::GPIO, args::Tuple{Int32,String}, debug::Bool=false) Writes an entry to an operation on a GPIO, of the form args = (operation, entry).
+
diff --git a/docs/build/lib/io_devices.md b/docs/build/lib/io_devices.md
index d79077a826dee0ed8a4b6b434fd950e5763c0ec9..ad6bf2fcfddf1bb39168e263ef1fd75d45cd6213 100644
--- a/docs/build/lib/io_devices.md
+++ b/docs/build/lib/io_devices.md
@@ -1,11 +1,68 @@
+- [`LabConnections.BeagleBone.Debug`](io_devices.md#LabConnections.BeagleBone.Debug)
+- [`LabConnections.BeagleBone.GPIO`](io_devices.md#LabConnections.BeagleBone.GPIO)
+- [`LabConnections.BeagleBone.IO_Object`](io_devices.md#LabConnections.BeagleBone.IO_Object)
+- [`LabConnections.BeagleBone.PWM`](io_devices.md#LabConnections.BeagleBone.PWM)
+- [`LabConnections.BeagleBone.SysLED`](io_devices.md#LabConnections.BeagleBone.SysLED)
 
 
 <a id='Available-devices-1'></a>
 
 # Available devices
 
+<a id='LabConnections.BeagleBone.Debug' href='#LabConnections.BeagleBone.Debug'>#</a>
+**`LabConnections.BeagleBone.Debug`** &mdash; *Type*.
+
+
+
+```
+Debug()
+```
+
+Type for debugging and precompile
+
+<a id='LabConnections.BeagleBone.GPIO' href='#LabConnections.BeagleBone.GPIO'>#</a>
+**`LabConnections.BeagleBone.GPIO`** &mdash; *Type*.
+
+
+
+Lowest form of communication with the GPIO pins. The available pins are listed in the "channel" parameter, and appear as directories in /sys/class/gpio after being exported.
+
+For instance, to setup a GPIO on "gpio112", configure it as an output pin and set it to high, the following code would be used.
+
+gpio = GPIO(1)   write!(gpio, (2,"out"))   write!(gpio, (1, "1"))
+
+The operation of reading the current output value of the GPIO is done by
+
+read(gpio, 1)
+
+See the test/BeagleBone/GPIO_test.jl for more examples.
+
+<a id='LabConnections.BeagleBone.IO_Object' href='#LabConnections.BeagleBone.IO_Object'>#</a>
+**`LabConnections.BeagleBone.IO_Object`** &mdash; *Type*.
+
+
+
+Define abstract type for pins/LEDS on the BeagleBone
+
+<a id='LabConnections.BeagleBone.PWM' href='#LabConnections.BeagleBone.PWM'>#</a>
+**`LabConnections.BeagleBone.PWM`** &mdash; *Type*.
+
+
+
+This script allows for low level PWM control of selected pins The valid pins dictionary relates to memory adresses in of the AM3359 chip, see p.182 in
 
 ```
-teardown
+www.ti.com/product/AM3359/technicaldocuments
 ```
 
+<a id='LabConnections.BeagleBone.SysLED' href='#LabConnections.BeagleBone.SysLED'>#</a>
+**`LabConnections.BeagleBone.SysLED`** &mdash; *Type*.
+
+
+
+```
+SysLED
+```
+
+Type representing the system LEDs on the BeagleBone. The LEDs are indexed by i ∈ [1,2,3,4].
+
diff --git a/docs/src/lib/functions.md b/docs/src/lib/functions.md
index 0995d728fdcbf4f0686a76cb9d8876c031be241d..6ba1e74b67dcecad0d3afeb40a935514b5e3a1a2 100644
--- a/docs/src/lib/functions.md
+++ b/docs/src/lib/functions.md
@@ -3,7 +3,8 @@ Pages = ["functions.md"]
 ```
 
 # Available functions
-```@docs
-initdev
-closedev
+
+```@autodocs
+Modules = [LabConnections.BeagleBone]
+Order   = [:function]
 ```
diff --git a/docs/src/lib/io_devices.md b/docs/src/lib/io_devices.md
index 4f92ad442fa61074f69763a353c610ecedde3d3b..97eee0a88702cd13619d53c3c915a5c6884a55b7 100644
--- a/docs/src/lib/io_devices.md
+++ b/docs/src/lib/io_devices.md
@@ -4,6 +4,7 @@ Pages = ["io_devices.md"]
 
 # Available devices
 
-```@docs
-teardown
+```@autodocs
+Modules = [LabConnections.BeagleBone]
+Order   = [:type]
 ```