modify API, move things around