OK, loads of duplication here.