better code and readme