make task constuctor protected.  should make usage clearer