refactoring/bug fix

restructed caching to handle when user has not registered with all providers

switch from storing timelines in an array to a hash