Finished, except for comment addition & testing/bug fixing.