used builder pattern for config