adde better error handling