Finished as of now, need to test