commited implementation (which doesnt work yet)
adjusted throws declaration