implement properties handling