Templated interface (WIP, needs docs)