add preprocess node functions
move extends into mixins where appropriate