Refactoring

* removed impl.**.api packages and reorganised classes
* removed unneeded interfaces with only one implementor