Creating some badass abstractions. Need to remove later.