implemented all checks