*(note: spreading was switched off for a more readable display here, so the values are slightly different from the graph below which has spreading enabled)*
-`pf.date(year, month, day)` - set time cursor. This is used for subsequently created incomes as a starting date, or
for their `.start()` and `.end()` methods when used without arguments. Day is optional and defaults to 1
-`pf.project_to(year, month, day, verbose)` - Run the simulation. month, day and verbose are optional, `month` and `day`
are by default Dec 31, `verbose` is True. `verbose` defines if we want to show updates in stdout when simulating. Returns a array of `samples` for plotting.
-`pf.graph(samples, currency)` - draw samples from `project_to()` using pyplot. Currency is appended to values for display only
-`pf.balance(money)` - set balance. when called in places other than at the beginning, this resets the balance at the given date resulting in a
sharp change in the graph.
-`pf.monthly(name, income, day=1)` - define a monthly income or expense of monthly value `income`, paid on day `day`.
This returns a MonthlyIncome object. Name describes the income / expense in the stdout log.
-`pf.single(name, money)` - once-off income or expense, returns a `SingleIncome`.
-`pf.expend(name, money)`, `pf.receive(name, money)` - aliases of `single` that also ensure the money value has the right sign
-`pf.borrow(name, money)` - describes a received interestless loan, returns a `SimpleLoan`.