take some functionallity out to extensions