why we need all of this?