this was a big one, livestream, JS refactor, file cleanup, canvas detection