changing interface to better handle cases