lots of jshinting