I'm thinking of doing this as a challenge for myself. 