change implementation more directly