add throw, add utility methods to library