big refactor, use java.awt.Point