change the way of implement