Updated to much cleaner, easier to use API