most intermediate stuff done