This should hopefully allow us to add more interesting modifications to the code, and have less boilerplate when implementing new function-based features. Signed-off-by: Alek Ratzloff <alekratz@gmail.com>