modified Builder