refactoring:
using ISnakeComponent, ISnakeComponentAddress in api and implementations