code: @Around("isProfileAnnotation(profile)")
  	public Object profileMethod(ProceedingJoinPoint joinPoint, Profile profile)	throws Throwable {
  		String logPrefix = null;
  
  		boolean debug = LOG.isDebugEnabled();
  		long time = System.currentTimeMillis();
  
  		// parse out the first arg
  		String arg1 = "";
  		Object[] args = joinPoint.getArgs();
  		if ((args != null) && (args.length > 0) && (args[0] != null)) {
  			arg1 = args[0].toString();
  		}
  		if (debug) {
  			logPrefix = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName() + " " + arg1;
  			LOG.debug(logPrefix + " START");
  		}
  		Object returnValue = joinPoint.proceed();
  		time = System.currentTimeMillis() - time;
  		if (debug) {
  			LOG.debug(logPrefix + " EXECUTED in " + time + " ms");
  		}
  		return returnValue;
  
  	}
docs: Intercepts methods that declare Profile annotation and prints out the time it takes to complete/
  
  @param joinPoint proceeding join point
  @return the intercepted method returned object
  @throws Throwable in case something goes wrong in the actual method call