reverted ppl, added some move semantics
added brace initialization for NULL