Interface optimization

merge this