lenghty explanation