clean up mount option passing
diff --git a/include/fuse.h b/include/fuse.h
index 782a51c..726b681 100644
--- a/include/fuse.h
+++ b/include/fuse.h
@@ -90,20 +90,18 @@
  *  with the same flags.  It is possible to have a file opened more
  *  than once, in which case only the last release will mean, that no
  *  more reads/writes will happen on the file.  The return value of
- *  release is ignored.  This call need only be implemented if this
- *  information is required, otherwise set this function to NULL.
+ *  release is ignored.  Implementing this method is optional.
  * 
  *  - flush() is called when close() has been called on an open file.
  *  NOTE: this does not mean that the file is released (e.g. after
  *  fork() an open file will have two references which both must be
- *  closed before the file is released).  The flush() method can be
+ *  closed before the file is released).  The flush() method may be
  *  called more than once for each open().  The return value of
  *  flush() is passed on to the close() system call.  Implementing
- *  this call is optional.  If it is not needed by the filesystem,
- *  then set the callback pointer to NULL.
+ *  this method is optional.
  * 
  *  - fsync() has a boolean 'datasync' parameter which if TRUE then do
- *  an fdatasync() operation.  Implementing this call is optional.
+ *  an fdatasync() operation.  Implementing this method is optional.
  */
 struct fuse_operations {
     int (*getattr)     (const char *, struct stat *);
@@ -139,15 +137,6 @@
     gid_t gid;
 };
 
-/* FUSE flags: */
-
-/** Enable debuging output */
-#define FUSE_DEBUG       (1 << 1)
-
-/** If a file is removed but it's still open, don't hide the file but
-    remove it immediately */
-#define FUSE_HARD_REMOVE (1 << 2)
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -160,8 +149,7 @@
  * 
  * This function does the following:
  *   - parses command line options (-d -s and -h)
- *   - passes all options after '--' to the fusermount program
- *   - mounts the filesystem by calling fusermount
+ *   - passes relevant mount options to the fuse_mount()
  *   - installs signal handlers for INT, HUP, TERM and PIPE
  *   - registers an exit handler to unmount the filesystem on program exit
  *   - creates a fuse handle
@@ -194,11 +182,10 @@
  * fuse_new()
  *
  * @param mountpoint the mount point path
- * @param args array of arguments to be passed to fusermount (NULL
- *        terminated).  Can be NULL if no arguments are needed.
+ * @param opts a comma separated list of mount options.  Can be NULL.
  * @return the control file descriptor on success, -1 on failure
  */
-int fuse_mount(const char *mountpoint, const char *args[]);
+int fuse_mount(const char *mountpoint, const char *opts);
 
 /*
  * Umount a FUSE mountpoint
@@ -211,11 +198,12 @@
  * Create a new FUSE filesystem.
  *
  * @param fd the control file descriptor
- * @param flags any combination of the FUSE flags defined above, or 0
+ * @param opts mount options to be used by the library
  * @param op the operations
  * @return the created FUSE handle
  */
-struct fuse *fuse_new(int fd, int flags, const struct fuse_operations *op);
+struct fuse *fuse_new(int fd, const char *opts, 
+                      const struct fuse_operations *op);
 
 /**
  * Destroy the FUSE handle. 
@@ -268,6 +256,16 @@
  */
 struct fuse_context *fuse_get_context(struct fuse *f);
 
+/**
+ * Check whether a mount option should be passed to the kernel or the
+ * library
+ *
+ * @param opt the option to check
+ * @return 1 if it is a library option, 0 otherwise
+ */
+int fuse_is_lib_option(const char *opt);
+
+
 /* ----------------------------------------------------------- *
  * Advanced API for event handling, don't worry about this...  *
  * ----------------------------------------------------------- */