My attempt to go through SICP