modularized and compiles