This is a school project for BBM488 course