interface support near completion, needs refactoring and docs