fixing up() to be simpler