functional as single player although some things should get tweeked