Needs more work on signals