fix #2. Adding is_empty method
fix #3. Adding :first method
fix #4. Changing _compact(max_length) visibility to private
Merge