more verbose; optimization