i think subject should also come from opts