complete(ish) through A3. add shading