updated, should be close to finished.