maybe it's not proper enough to define these methods in this way at present