[WIP] use staticmethod instead of function