A framework for client-side interfaces