more dslish stuff.
much better.
Abstract functions.