* Moving source to subfolder.

* Enhancing interface and implementation.