update js, though still incomplete