I really never understood why this features wasn't included within the standard library? This seems like tho such a useful feature and all non standard library provides them :/