custom type return