refreshed builder pattern