refactoring, added experimental epu support