some goodies
restructuring to simple design, maybe will evolve to more complex