Newer version with better class organisation
Moved board implementation into separate file w. header