modified by hejian for vaadin