provided implementation