using libraries & semi modifying