Performace inhancements and chainging to extension methods for easier use