still refactoring
compiling version