copy some implementations