Restructured, added comments, fixed chrome play() bug