some refractoring and readme