enable user to choose the backend