less code but... maybe more complex.