interface should also have support for errors