major forecast api refactor