refacotor api