simplify implemetions.