add random implementation