source from: FitQueens