board generation methods are DRY