some refactoring of the fd class interface