Abstract abs* smart constructors for HOAS

Reduce code duplication by extra-fancy abstractions. This was a fun programming project after coming back from a party.
left -> right