a lot of refactoring, added executable attribute