added design, implementation, added to discussion