range struct