refactor few interfaces