Requires #129. Part of #114
Requires #129.
Part of #114