using source array replace source function
add GPU snapshot
update ignore
add boundries to snapshots
update TODOs