refactor / error handling readd