templated a bit more