implement more of api