Self finished version.