tentatively complete first set, haven't done testing so may still have
to debug