fix code coverage, better namespace, use interfaces