todo style, not perfect, but on the way to get better...