Complete but definitely needs polishing & testing.