Make it more cacheable
Small amount of crappy error handling - needs tinkering