reactive programming tools