completed the Source constructor
added exceptions