updated prototype