communicates with UI