add abstract communication layer
add communication implementation stub
WIP architecture
Merge branch 'feature-architecture' into develop