refactored to use more forge modules