add floor & edge check