simplified and removed some lazy vals