custom thing implementation