size should be a tuple