restructured Future functionality into separate extensions