cleaned up api, still not done