api changes for better control