all parts implemented