What's your experience with GraniteDS? When would you recommend using in a project?