first cut of source()