use arrays instead of lists, use class for piece instead of struct