Pal

Adding platform abstraction layer.