add error catching
add documentation