Merge branch 'release/0.3.0' into develop
make repository interfaces more generic.
update version.
Merge branch 'release/0.4.0'