add abstract communication layer
add communication implementation stub