Modified to use XML deserialisation
Added offline caching and fixed #1