added synchronously/asynchronously support