use factory method to get difference engine everywhere