updated with a few bits and bobs