[UPDATE] Lots of modifications