Change everything to use and return *. Not tested yet.