Finished. For now. May need some minor code changes.