be able to compile multiple modes