this can be removed and use only the interface