wrap methods in safeExec (for now)
rename loadURL to load, pretty up comments
allow overloading of play() function