Regarding #107: initShips can be run in any monad random, only initShips' must be in a commutative monad with proper lazyness.