finished implementation details