pragmatic javascript aop library