refactor, use racket module system