optimize the interface