updating with more finalized version