cleaned up and added property parsing