diff --git a/pyradiosky/skymodel.py b/pyradiosky/skymodel.py
index 8b03268..882b2ed 100644
--- a/pyradiosky/skymodel.py
+++ b/pyradiosky/skymodel.py
@@ -4,8 +4,8 @@
 """Define SkyModel class and helper functions."""
 
 import warnings
-
 import os
+
 import h5py
 import numpy as np
 from scipy.linalg import orthogonal_procrustes as ortho_procr
@@ -15,15 +15,11 @@ from astropy.time import Time
 import astropy.units as units
 from astropy.units import Quantity
 from astropy.io import votable
+
 from pyuvdata.uvbase import UVBase
 from pyuvdata.parameter import UVParameter
 import pyuvdata.utils as uvutils
-
-try:
-    from pyuvdata.uvbeam.cst_beam import CSTBeam
-except ImportError:  # pragma: no cover
-    # backwards compatility for older pyuvdata versions
-    from pyuvdata.cst_beam import CSTBeam
+from pyuvdata.uvbeam.cst_beam import CSTBeam
 
 from . import utils as skyutils
 from . import spherical_coords_transforms as sct
@@ -446,7 +442,7 @@ class SkyModel(UVBase):
         # initialize the underlying UVBase properties
         super(SkyModel, self).__init__()
 
-        # String to add to history of any files written with this version of pyuvdata
+        # String to add to history of any files written with this version of pyradiosky
         self.pyradiosky_version_str = (
             "  Read/written with pyradiosky version: " + __version__ + "."
         )
@@ -713,6 +709,15 @@ class SkyModel(UVBase):
             if self.Ncomponents == 1:
                 self.stokes = self.stokes.reshape(4, self.Nfreqs, 1)
 
+            stokes_eshape = self._stokes.expected_shape(self)
+            if self.stokes.shape != stokes_eshape:
+                # Check this here to give a clear error. Otherwise this shape
+                # propagates to coherency_radec and gives a confusing error message.
+                raise ValueError(
+                    "stokes is not the correct shape. stokes shape is "
+                    f"{self.stokes.shape}, expected shape is {stokes_eshape}."
+                )
+
             if stokes_error is not None:
                 self.stokes_error = stokes_error
                 if self.Ncomponents == 1:

diff --git a/.github/workflows/testsuite.yaml b/.github/workflows/testsuite.yaml
index 2da4e94..e5ebf6f 100644
--- a/.github/workflows/testsuite.yaml
+++ b/.github/workflows/testsuite.yaml
@@ -91,7 +91,7 @@ jobs:
           # pytest --pyargs pyradiosky --cov=pyradiosky --cov-config=../.coveragerc --cov-report xml:../coverage.xml --junitxml=../test-reports/xunit.xml
           # cd ..
 
-      - uses: codecov/codecov-action@v1.5.2
+      - uses: codecov/codecov-action@v2.0.2
         if: success()
         with:
           token: ${{secrets.CODECOV_TOKEN}} #required
@@ -139,7 +139,7 @@ jobs:
         run: |
           python -m pytest -v --cov=pyradiosky --cov-config=.coveragerc --cov-report xml:./coverage.xml --junitxml=test-reports/xunit.xml
 
-      - uses: codecov/codecov-action@v1.5.2
+      - uses: codecov/codecov-action@v2.0.2
         if: success()
         with:
           token: ${{secrets.CODECOV_TOKEN}} #required
diff --git a/pyradiosky/tests/test_skymodel.py b/pyradiosky/tests/test_skymodel.py
index 3aef7e8..014563b 100644
--- a/pyradiosky/tests/test_skymodel.py
+++ b/pyradiosky/tests/test_skymodel.py
@@ -646,6 +646,16 @@ def test_skymodel_init_errors(zenith_skycoord):
             freq_array=[1e8] * units.Hz,
         )
 
+    with pytest.raises(ValueError, match=("stokes is not the correct shape.")):
+        SkyModel(
+            name=["icrs_zen0", "icrs_zen0", "icrs_zen0"],
+            ra=[ra] * 3,
+            dec=[dec] * 3,
+            stokes=[1.0, 0, 0, 0] * units.Jy,
+            spectral_type="flat",
+            freq_array=[1e8] * units.Hz,
+        )
+
     with pytest.raises(
         ValueError, match=("For point component types, the coherency_radec")
     ):

Error message with SkyModel input lengths
When a SkyModel is passed multiple inputs and one is of different length, the error message reads:

`ValueError: UVParameter <pyuvdata.parameter.UVParameter object at 0x7fe0a97efe80> is not expected shape. Parameter shape is (699,), expected shape is (26734,).`

This could be more intuitive to solve if the error indicated which input is of an incorrect length. 
pyradiosky/tests/test_skymodel.py::test_skymodel_init_errors
pyradiosky/tests/test_skymodel.py::test_set_spectral_params pyradiosky/tests/test_skymodel.py::test_init_error pyradiosky/tests/test_skymodel.py::test_init_error_freqparams[spectral_index] pyradiosky/tests/test_skymodel.py::test_init_error_freqparams[full] pyradiosky/tests/test_skymodel.py::test_init_error_freqparams[subband] pyradiosky/tests/test_skymodel.py::test_check_errors pyradiosky/tests/test_skymodel.py::test_source_zenith_from_icrs pyradiosky/tests/test_skymodel.py::test_source_zenith pyradiosky/tests/test_skymodel.py::test_init_lists_errors[flat-ra-All pyradiosky/tests/test_skymodel.py::test_init_lists_errors[flat-ra_lat-All pyradiosky/tests/test_skymodel.py::test_init_lists_errors[flat-dec-All pyradiosky/tests/test_skymodel.py::test_init_lists_errors[flat-dec_lon-All pyradiosky/tests/test_skymodel.py::test_init_lists_errors[flat-stokes-Stokes pyradiosky/tests/test_skymodel.py::test_init_lists_errors[flat-stokes_obj-Stokes pyradiosky/tests/test_skymodel.py::test_init_lists_errors[spectral_index-reference_frequency-If pyradiosky/tests/test_skymodel.py::test_init_lists_errors[spectral_index-reference_frequency_jy-'Jy'\\ pyradiosky/tests/test_skymodel.py::test_init_lists_errors[spectral_index-reference_frequency_obj-If pyradiosky/tests/test_skymodel.py::test_init_lists_errors[subband-freq_array-If pyradiosky/tests/test_skymodel.py::test_init_lists_errors[subband-freq_array_ang-'deg'\\ pyradiosky/tests/test_skymodel.py::test_init_lists_errors[subband-freq_array_obj-If pyradiosky/tests/test_skymodel.py::test_jansky_to_kelvin_errors pyradiosky/tests/test_skymodel.py::test_healpix_to_point_errors pyradiosky/tests/test_skymodel.py::test_healpix_to_point_source_cuts pyradiosky/tests/test_skymodel.py::test_update_position_errors pyradiosky/tests/test_skymodel.py::test_coherency_calc_errors pyradiosky/tests/test_skymodel.py::test_calc_basis_rotation_matrix pyradiosky/tests/test_skymodel.py::test_calc_vector_rotation pyradiosky/tests/test_skymodel.py::test_pol_rotator[flat] pyradiosky/tests/test_skymodel.py::test_pol_rotator[full] pyradiosky/tests/test_skymodel.py::test_polarized_source_visibilities pyradiosky/tests/test_skymodel.py::test_polarized_source_smooth_visibilities pyradiosky/tests/test_skymodel.py::test_concat_overlap_errors[point] pyradiosky/tests/test_skymodel.py::test_concat_overlap_errors[healpix] pyradiosky/tests/test_skymodel.py::test_read_healpix_hdf5_old pyradiosky/tests/test_skymodel.py::test_units_healpix_to_sky pyradiosky/tests/test_skymodel.py::test_order_healpix_to_sky[none] pyradiosky/tests/test_skymodel.py::test_order_healpix_to_sky[ring] pyradiosky/tests/test_skymodel.py::test_order_healpix_to_sky[nested] pyradiosky/tests/test_skymodel.py::test_read_write_healpix_oldfunction pyradiosky/tests/test_skymodel.py::test_write_healpix_error pyradiosky/tests/test_skymodel.py::test_healpix_import_err pyradiosky/tests/test_skymodel.py::test_healpix_positions pyradiosky/tests/test_skymodel.py::test_flux_cuts[flat-init_kwargs0-cut_kwargs0] pyradiosky/tests/test_skymodel.py::test_flux_cuts[flat-init_kwargs1-cut_kwargs1] pyradiosky/tests/test_skymodel.py::test_flux_cuts[full-init_kwargs2-cut_kwargs2] pyradiosky/tests/test_skymodel.py::test_flux_cuts[subband-init_kwargs3-cut_kwargs3] pyradiosky/tests/test_skymodel.py::test_flux_cuts[subband-init_kwargs4-cut_kwargs4] pyradiosky/tests/test_skymodel.py::test_flux_cuts[flat-init_kwargs5-cut_kwargs5] pyradiosky/tests/test_skymodel.py::test_source_cut_error[spectral_index-init_kwargs0-cut_kwargs0-NotImplementedError-Flux pyradiosky/tests/test_skymodel.py::test_source_cut_error[full-init_kwargs1-cut_kwargs1-ValueError-freq_range pyradiosky/tests/test_skymodel.py::test_source_cut_error[subband-init_kwargs2-cut_kwargs2-ValueError-freq_range pyradiosky/tests/test_skymodel.py::test_source_cut_error[subband-init_kwargs3-cut_kwargs3-ValueError-No pyradiosky/tests/test_skymodel.py::test_circumpolar_nonrising pyradiosky/tests/test_skymodel.py::test_get_matching_fields[gle-name_list0-kwargs0-GLEAM] pyradiosky/tests/test_skymodel.py::test_get_matching_fields[raj2000-name_list1-kwargs1-RAJ2000] pyradiosky/tests/test_skymodel.py::test_get_matching_fields[ra-name_list2-kwargs2-RAJ2000] pyradiosky/tests/test_skymodel.py::test_get_matching_fields[foo-name_list3-kwargs3-None] pyradiosky/tests/test_skymodel.py::test_get_matching_fields_errors[j2000-name_list0-More pyradiosky/tests/test_skymodel.py::test_get_matching_fields_errors[foo-name_list1-No pyradiosky/tests/test_skymodel.py::test_read_gleam[flat] pyradiosky/tests/test_skymodel.py::test_read_gleam[subband] pyradiosky/tests/test_skymodel.py::test_read_gleam_errors pyradiosky/tests/test_skymodel.py::test_read_deprecated_votable pyradiosky/tests/test_skymodel.py::test_read_votable_errors pyradiosky/tests/test_skymodel.py::test_fhd_catalog_reader_extended_sources pyradiosky/tests/test_skymodel.py::test_fhd_catalog_reader_beam_values pyradiosky/tests/test_skymodel.py::test_fhd_catalog_reader_beam_values_extended pyradiosky/tests/test_skymodel.py::test_fhd_catalog_reader_labeling_extended_sources pyradiosky/tests/test_skymodel.py::test_point_catalog_reader pyradiosky/tests/test_skymodel.py::test_write_text_catalog_error pyradiosky/tests/test_skymodel.py::test_read_text_source_cuts[flat] pyradiosky/tests/test_skymodel.py::test_read_text_source_cuts[subband] pyradiosky/tests/test_skymodel.py::test_pyuvsim_mock_catalog_read pyradiosky/tests/test_skymodel.py::test_read_text_errors pyradiosky/tests/test_skymodel.py::test_zenith_on_moon pyradiosky/tests/test_skymodel.py::test_source_motion pyradiosky/tests/test_skymodel.py::test_stokes_eval[full-True] pyradiosky/tests/test_skymodel.py::test_stokes_eval[full-False] pyradiosky/tests/test_skymodel.py::test_stokes_eval[subband-True] pyradiosky/tests/test_skymodel.py::test_stokes_eval[spectral_index-True] pyradiosky/tests/test_skymodel.py::test_stokes_eval[spectral_index-False] pyradiosky/tests/test_skymodel.py::test_stokes_eval[flat-True] pyradiosky/tests/test_skymodel.py::test_stokes_eval[flat-False] pyradiosky/tests/test_skymodel.py::test_skyh5_read_errors[name-None-Component pyradiosky/tests/test_skymodel.py::test_skyh5_read_errors[Ncomponents-5-Ncomponents pyradiosky/tests/test_skymodel.py::test_skyh5_read_errors[Nfreqs-10-Nfreqs pyradiosky/tests/test_skymodel.py::test_skyh5_read_errors_healpix[nside-None-Component pyradiosky/tests/test_skymodel.py::test_skyh5_read_errors_healpix[hpx_inds-None-Component pyradiosky/tests/test_skymodel.py::test_skyh5_read_errors_healpix[Ncomponents-10-Ncomponents pyradiosky/tests/test_skymodel.py::test_skyh5_read_errors_oldstyle_healpix pyradiosky/tests/test_skymodel.py::test_healpix_hdf5_read_errors_newstyle_healpix pyradiosky/tests/test_skymodel.py::test_hpx_ordering pyradiosky/tests/test_skymodel.py::test_healpix_coordinate_init_override pyradiosky/tests/test_skymodel.py::test_healpix_coordinate_init_override_lists pyradiosky/tests/test_skymodel.py::test_healpix_coordinate_init_no_override pyradiosky/tests/test_skymodel.py::test_healpix_init_override_errors[ra-10-All pyradiosky/tests/test_skymodel.py::test_healpix_init_override_errors[dec-10-All pyradiosky/tests/test_skymodel.py::test_write_clobber_error