IMPORTANT: code refactor, please PULL / MERGE & RESOLVE CONFLICT immediately