lots of class dependency and js monkeying