Someday I will merge with upstream on this