my solution for exercises in SICP