separate solution for api