Changed implementation to be cleaner and add board concept