updated implementation details