implemented in both types of platforms