use external scheme id where possible + enhanced error handling