Part of #17 Depends on #38
Part of #17
Depends on #38