Various enhancements and bug fixes

Signed-off-by: Luke Oatham <lukeoatham@gmail.com>