interface changes + gathering implementation