First draft of piston class and with custom piston exception