*Adding exceptions
*implementing missing methods
remark: not tested yet