nice comments, prob will look bad in github