properly handle source and line