Base function

Can flip
No support for horizontal filp
Bad user experience