refer to vteckidd's project log.