cleaner seperation between the ui and the this api