Added Client-side eventing and validation