Changed structure and reverted to interfaces