reactive programming project