body-weight refactored to use promises