improve interface