Finished sans AI implementation