Finished rough copy, need to check bugs etc