added exceptions.. haven't tested them though