these exist in the standard library. no reason to duplicate them