amazing … complete all function mostly