phase II portfolio challenge: JS Events