major overhaul, notes inside the .js