use singleton instead of asList