added all missing pieces