done with bugs and exceptions