implement as you learn