to refactor
good enough?