implenment rx function