renamed preferences, added copyright, cleaned up javadocs and method names, callbacks can now be null for no notifications from async methods