Signal implementation

See #4