protoctor.hpp rewrited & symplified