introduce platform interface