add range checking