Add optional target arg to constructors which acts a receiver for callback and can (in the future) be weakly held