Added build system and Optional monad