Move interfaces and implementations to its own packages.
Merge pull request #5 from jmg/organizing-interfaces-implementations

Move interfaces and implementations to its own packages.