move re-usable functionality to Board