refactored AbstractBoard