add proper error handling
add range tests