Interface refactoring + better error handling