refactored to use comment blocks