Fixed a few package names.
Added implementation for the interfaces.
Added some todo markups to split responsabilities