Added all the pieces, not yet all tested