change PhantomToken so all the work is done in the constructor