added some annotations, created Exception types for guard methods