First pass at problem 27