improve the interface