complete but need more random sources