add proper error handling
add test code