Finished. Need to debug.