Forcast

Updated after Hound errors in last pull request.
Resulted in some refactoring and changing design slightly.
There still might be some hound errors from test suite and files that were auto generated.
Indent `when` one step more than `case`.