Added some Exceptions + enhanced the ArrayList