self structure algorithm