add factory methods for both remote and local versions. we can now switch based on ENV
fetch date once and reuse it