Full Implmentation