add loads of cool functions courtesy of @addyosmani