did some implementations