Consolidated only

Progress PR, do not merge yet.

The changes are complete but require review.

Unit tests need to be updated to match new functions.
Is there any point defining these functions? Abstraction is nice and all, but I find this just adds clutter.