Moved classes into separate JS files to reduce clutter