Started working through The API advice from Matt Gemmell