Added sale functionality

Also added more dynamic exception handling