added basic ui, fixed the board initialization algorithm, updated some unit tests