platform independent part is finished