redoing blog2 from memory