from the bitfountain course with my customizations