add Signal interface and Windows implementation