rich client framework